{
    "id": "d302d9d63fbafb5c8d635cc62cb1cc7c",
    "_format": "hh-sol-build-info-1",
    "solcVersion": "0.8.9",
    "solcLongVersion": "0.8.9+commit.e5eed63a",
    "input": {
        "language": "Solidity",
        "sources": {
            "contracts/insured-bridge/BridgePool.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"./interfaces/BridgeAdminInterface.sol\";\nimport \"./interfaces/BridgePoolInterface.sol\";\n\nimport \"../oracle/interfaces/SkinnyOptimisticOracleInterface.sol\";\nimport \"../oracle/interfaces/StoreInterface.sol\";\nimport \"../oracle/interfaces/FinderInterface.sol\";\nimport \"../oracle/implementation/Constants.sol\";\n\nimport \"../common/implementation/AncillaryData.sol\";\nimport \"../common/implementation/Testable.sol\";\nimport \"../common/implementation/FixedPoint.sol\";\nimport \"../common/implementation/Lockable.sol\";\nimport \"../common/implementation/MultiCaller.sol\";\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/utils/Address.sol\";\n\ninterface WETH9Like {\n    function withdraw(uint256 wad) external;\n\n    function deposit() external payable;\n}\n\n/**\n * @notice Contract deployed on L1 that provides methods for \"Relayers\" to fulfill deposit orders that originated on L2.\n * The Relayers can either post capital to fulfill the deposit (instant relay), or request that the funds are taken out\n * of a passive liquidity provider pool following a challenge period (slow relay). This contract ingests liquidity from\n * passive liquidity providers and returns them claims to withdraw their funds. Liquidity providers are incentivized\n * to post collateral by earning a fee per fulfilled deposit order.\n * @dev A \"Deposit\" is an order to send capital from L2 to L1, and a \"Relay\" is a fulfillment attempt of that order.\n */\ncontract BridgePool is MultiCaller, Testable, BridgePoolInterface, ERC20, Lockable {\n    using SafeERC20 for IERC20;\n    using FixedPoint for FixedPoint.Unsigned;\n    using Address for address;\n\n    // Token that this contract receives as LP deposits.\n    IERC20 public override l1Token;\n\n    // Track the total number of relays and uniquely identifies relays.\n    uint32 public numberOfRelays;\n\n    // Reserves that are unutilized and withdrawable.\n    uint256 public liquidReserves;\n\n    // Reserves currently utilized due to L2-L1 transactions in flight.\n    int256 public utilizedReserves;\n\n    // Reserves that are not yet utilized but are pre-allocated for a pending relay.\n    uint256 public pendingReserves;\n\n    // True If this pool stores WETH. If the withdrawn token is WETH then unwrap and send ETH when finalizing\n    // relays. Also enable LPs to receive ETH, if they choose, when withdrawing liquidity.\n    bool public isWethPool;\n\n    // Enables the Bridge Admin to enable/disable relays in this pool. Disables relayDeposit and relayAndSpeedUp.\n    bool public relaysEnabled = true;\n\n    // Exponential decay exchange rate to accumulate fees to LPs over time. This can be changed via the BridgeAdmin.\n    uint64 public lpFeeRatePerSecond;\n\n    // Last timestamp that LP fees were updated.\n    uint32 public lastLpFeeUpdate;\n\n    // Store local instances of contract params to save gas relaying.\n    uint64 public proposerBondPct;\n    uint32 public optimisticOracleLiveness;\n\n    // Store local instance of the reserve currency final fee. This is a gas optimization to not re-call the store.\n    uint256 l1TokenFinalFee;\n\n    // Cumulative undistributed LP fees. As fees accumulate, they are subtracted from this number.\n    uint256 public undistributedLpFees;\n\n    // Total bond amount held for pending relays. Bonds are released following a successful relay or after a dispute.\n    uint256 public bonds;\n\n    // Administrative contract that deployed this contract and also houses all state variables needed to relay deposits.\n    BridgeAdminInterface public bridgeAdmin;\n\n    // Store local instances of the contract instances to save gas relaying. Can be sync with the Finder at any time via\n    // the syncUmaEcosystemParams() public function.\n    StoreInterface public store;\n    SkinnyOptimisticOracleInterface public optimisticOracle;\n\n    // DVM price request identifier that is resolved based on the validity of a relay attempt.\n    bytes32 public identifier;\n\n    // A Relay represents an attempt to finalize a cross-chain transfer that originated on an L2 DepositBox contract.\n    // The flow chart between states is as follows:\n    // - Begin at Uninitialized.\n    // - When relayDeposit() is called, a new relay is created with state Pending and mapped to the L2 deposit hash.\n    // - If the relay is disputed, the RelayData gets deleted and the L2 deposit hash has no relay mapped to it anymore.\n    // - The above statements enable state to transfer between the Uninitialized and Pending states.\n    // - When settleRelay() is successfully called, the relay state gets set to Finalized and cannot change from there.\n    // - It is impossible for a relay to be deleted when in Finalized state (and have its state set to Uninitialized)\n    //   because the only way for settleRelay() to succeed is if the price has resolved on the OptimisticOracle.\n    // - You cannot dispute an already resolved request on the OptimisticOracle. Moreover, the mapping from\n    //   a relay's ancillary data hash to its deposit hash is deleted after a successful settleRelay() call.\n    enum RelayState { Uninitialized, Pending, Finalized }\n\n    // Data from L2 deposit transaction.\n    struct DepositData {\n        uint256 chainId;\n        uint64 depositId;\n        address payable l1Recipient;\n        address l2Sender;\n        uint256 amount;\n        uint64 slowRelayFeePct;\n        uint64 instantRelayFeePct;\n        uint32 quoteTimestamp;\n    }\n\n    // Each L2 Deposit can have one Relay attempt at any one time. A Relay attempt is characterized by its RelayData.\n    struct RelayData {\n        RelayState relayState;\n        address slowRelayer;\n        uint32 relayId;\n        uint64 realizedLpFeePct;\n        uint32 priceRequestTime;\n        uint256 proposerBond;\n        uint256 finalFee;\n    }\n\n    // Associate deposits with pending relay data. When the mapped relay hash is empty, new relay attempts can be made\n    // for this deposit. The relay data contains information necessary to pay out relayers on successful relay.\n    // Relay hashes are deleted when they are disputed on the OptimisticOracle.\n    mapping(bytes32 => bytes32) public relays;\n\n    // Map hash of deposit and realized-relay fee to instant relayers. This mapping is checked at settlement time\n    // to determine if there was a valid instant relayer.\n    mapping(bytes32 => address) public instantRelays;\n\n    event LiquidityAdded(uint256 amount, uint256 lpTokensMinted, address indexed liquidityProvider);\n    event LiquidityRemoved(uint256 amount, uint256 lpTokensBurnt, address indexed liquidityProvider);\n    event DepositRelayed(\n        bytes32 indexed depositHash,\n        DepositData depositData,\n        RelayData relay,\n        bytes32 relayAncillaryDataHash\n    );\n    event RelaySpedUp(bytes32 indexed depositHash, address indexed instantRelayer, RelayData relay);\n\n    // Note: the difference between a dispute and a cancellation is that a cancellation happens in the case where\n    // something changes in the OO between request and dispute that causes calls to it to fail. The most common\n    // case would be an increase in final fee. However, things like whitelisting can also cause problems.\n    event RelayDisputed(bytes32 indexed depositHash, bytes32 indexed relayHash, address indexed disputer);\n    event RelayCanceled(bytes32 indexed depositHash, bytes32 indexed relayHash, address indexed disputer);\n    event RelaySettled(bytes32 indexed depositHash, address indexed caller, RelayData relay);\n    event BridgePoolAdminTransferred(address oldAdmin, address newAdmin);\n    event RelaysEnabledSet(bool newRelaysEnabled);\n    event LpFeeRateSet(uint64 newLpFeeRatePerSecond);\n\n    modifier onlyBridgeAdmin() {\n        require(msg.sender == address(bridgeAdmin), \"Caller not bridge admin\");\n        _;\n    }\n\n    modifier onlyIfRelaysEnabld() {\n        require(relaysEnabled, \"Relays are disabled\");\n        _;\n    }\n\n    /**\n     * @notice Construct the Bridge Pool.\n     * @param _lpTokenName Name of the LP token to be deployed by this contract.\n     * @param _lpTokenSymbol Symbol of the LP token to be deployed by this contract.\n     * @param _bridgeAdmin Admin contract deployed alongside on L1. Stores global variables and has owner control.\n     * @param _l1Token Address of the L1 token that this bridgePool holds. This is the token LPs deposit and is bridged.\n     * @param _lpFeeRatePerSecond Interest rate payment that scales the amount of pending fees per second paid to LPs.\n     * @param _isWethPool Toggles if this is the WETH pool. If it is then can accept ETH and wrap to WETH for the user.\n     * @param _timer Timer used to synchronize contract time in testing. Set to 0x000... in production.\n     */\n    constructor(\n        string memory _lpTokenName,\n        string memory _lpTokenSymbol,\n        address _bridgeAdmin,\n        address _l1Token,\n        uint64 _lpFeeRatePerSecond,\n        bool _isWethPool,\n        address _timer\n    ) Testable(_timer) ERC20(_lpTokenName, _lpTokenSymbol) {\n        require(bytes(_lpTokenName).length != 0 && bytes(_lpTokenSymbol).length != 0, \"Bad LP token name or symbol\");\n        bridgeAdmin = BridgeAdminInterface(_bridgeAdmin);\n        l1Token = IERC20(_l1Token);\n        lastLpFeeUpdate = uint32(getCurrentTime());\n        lpFeeRatePerSecond = _lpFeeRatePerSecond;\n        isWethPool = _isWethPool;\n\n        syncUmaEcosystemParams(); // Fetch OptimisticOracle and Store addresses and L1Token finalFee.\n        syncWithBridgeAdminParams(); // Fetch ProposerBondPct OptimisticOracleLiveness, Identifier from the BridgeAdmin.\n\n        emit LpFeeRateSet(lpFeeRatePerSecond);\n    }\n\n    /*************************************************\n     *          LIQUIDITY PROVIDER FUNCTIONS         *\n     *************************************************/\n\n    /**\n     * @notice Add liquidity to the bridge pool. Pulls l1Token from the caller's wallet. The caller is sent back a\n     * commensurate number of LP tokens (minted to their address) at the prevailing exchange rate.\n     * @dev The caller must approve this contract to transfer `l1TokenAmount` amount of l1Token if depositing ERC20.\n     * @dev The caller can deposit ETH which is auto wrapped to WETH. This can only be done if: a) this is the Weth pool\n     * and b) the l1TokenAmount matches to the transaction msg.value.\n     * @dev Reentrancy guard not added to this function because this indirectly calls sync() which is guarded.\n     * @param l1TokenAmount Number of l1Token to add as liquidity.\n     */\n    function addLiquidity(uint256 l1TokenAmount) public payable nonReentrant() {\n        // If this is the weth pool and the caller sends msg.value then the msg.value must match the l1TokenAmount.\n        // Else, msg.value must be set to 0.\n        require((isWethPool && msg.value == l1TokenAmount) || msg.value == 0, \"Bad add liquidity Eth value\");\n\n        // Since `exchangeRateCurrent()` reads this contract's balance and updates contract state using it,\n        // we must call it first before transferring any tokens to this contract.\n        uint256 lpTokensToMint = (l1TokenAmount * 1e18) / _exchangeRateCurrent();\n        _mint(msg.sender, lpTokensToMint);\n        liquidReserves += l1TokenAmount;\n\n        if (msg.value > 0 && isWethPool) WETH9Like(address(l1Token)).deposit{ value: msg.value }();\n        else l1Token.safeTransferFrom(msg.sender, address(this), l1TokenAmount);\n\n        emit LiquidityAdded(l1TokenAmount, lpTokensToMint, msg.sender);\n    }\n\n    /**\n     * @notice Removes liquidity from the bridge pool. Burns lpTokenAmount LP tokens from the caller's wallet. The caller\n     * is sent back a commensurate number of l1Tokens at the prevailing exchange rate.\n     * @dev The caller does not need to approve the spending of LP tokens as this method directly uses the burn logic.\n     * @dev Reentrancy guard not added to this function because this indirectly calls sync() which is guarded.\n     * @param lpTokenAmount Number of lpTokens to redeem for underlying.\n     * @param sendEth Enable the liquidity provider to remove liquidity in ETH, if this is the WETH pool.\n     */\n    function removeLiquidity(uint256 lpTokenAmount, bool sendEth) public nonReentrant() {\n        // Can only send eth on withdrawing liquidity iff this is the WETH pool.\n        require(!sendEth || isWethPool, \"Cant send eth\");\n        uint256 l1TokensToReturn = (lpTokenAmount * _exchangeRateCurrent()) / 1e18;\n\n        // Check that there is enough liquid reserves to withdraw the requested amount.\n        require(liquidReserves >= (pendingReserves + l1TokensToReturn), \"Utilization too high to remove\");\n\n        _burn(msg.sender, lpTokenAmount);\n        liquidReserves -= l1TokensToReturn;\n\n        if (sendEth) _unwrapWETHTo(payable(msg.sender), l1TokensToReturn);\n        else l1Token.safeTransfer(msg.sender, l1TokensToReturn);\n\n        emit LiquidityRemoved(l1TokensToReturn, lpTokenAmount, msg.sender);\n    }\n\n    /**************************************\n     *          RELAYER FUNCTIONS         *\n     **************************************/\n\n    /**\n     * @notice Called by Relayer to execute a slow + fast relay from L2 to L1, fulfilling a corresponding deposit order.\n     * @dev There can only be one pending relay for a deposit. This method is effectively the relayDeposit and\n     * speedUpRelay methods concatenated. This could be refactored to just call each method, but there\n     * are some gas savings in combining the transfers and hash computations.\n     * @dev Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.\n     * @dev This function can only be called if relays are enabled for this bridge pool.\n     * @param depositData the deposit data struct containing all the user's deposit information.\n     * @param realizedLpFeePct LP fee calculated off-chain considering the L1 pool liquidity at deposit time, before\n     *      quoteTimestamp. The OO acts to verify the correctness of this realized fee. Cannot exceed 50%.\n     */\n    function relayAndSpeedUp(DepositData memory depositData, uint64 realizedLpFeePct)\n        public\n        onlyIfRelaysEnabld()\n        nonReentrant()\n    {\n        // If no pending relay for this deposit, then associate the caller's relay attempt with it.\n        uint32 priceRequestTime = uint32(getCurrentTime());\n\n        // The realizedLPFeePct should never be greater than 0.5e18 and the slow and instant relay fees should never be\n        // more than 0.25e18 each. Therefore, the sum of all fee types can never exceed 1e18 (or 100%).\n        require(\n            depositData.slowRelayFeePct <= 0.25e18 &&\n                depositData.instantRelayFeePct <= 0.25e18 &&\n                realizedLpFeePct <= 0.5e18,\n            \"Invalid fees\"\n        );\n\n        // Check if there is a pending relay for this deposit.\n        bytes32 depositHash = _getDepositHash(depositData);\n\n        // Note: A disputed relay deletes the stored relay hash and enables this require statement to pass.\n        require(relays[depositHash] == bytes32(0), \"Pending relay exists\");\n\n        uint256 proposerBond = _getProposerBond(depositData.amount);\n\n        // Save hash of new relay attempt parameters.\n        // Note: The liveness for this relay can be changed in the BridgeAdmin, which means that each relay has a\n        // potentially variable liveness time. This should not provide any exploit opportunities, especially because\n        // the BridgeAdmin state (including the liveness value) is permissioned to the cross domained owner.\n        RelayData memory relayData =\n            RelayData({\n                relayState: RelayState.Pending,\n                slowRelayer: msg.sender,\n                relayId: numberOfRelays++, // Note: Increment numberOfRelays at the same time as setting relayId to its current value.\n                realizedLpFeePct: realizedLpFeePct,\n                priceRequestTime: priceRequestTime,\n                proposerBond: proposerBond,\n                finalFee: l1TokenFinalFee\n            });\n        bytes32 relayHash = _getRelayHash(depositData, relayData);\n        relays[depositHash] = _getRelayDataHash(relayData);\n\n        bytes32 instantRelayHash = _getInstantRelayHash(depositHash, relayData);\n        require(\n            // Can only speed up a pending relay without an existing instant relay associated with it.\n            instantRelays[instantRelayHash] == address(0),\n            \"Relay cannot be sped up\"\n        );\n\n        // Sanity check that pool has enough balance to cover relay amount + proposer reward. Reward amount will be\n        // paid on settlement after the OptimisticOracle price request has passed the challenge period.\n        // Note: liquidReserves should always be <= balance - bonds.\n        require(liquidReserves - pendingReserves >= depositData.amount, \"Insufficient pool balance\");\n\n        // Compute total proposal bond and pull from caller so that the OptimisticOracle can pull it from here.\n        uint256 totalBond = proposerBond + l1TokenFinalFee;\n\n        // Pull relay amount minus fees from caller and send to the deposit l1Recipient. The total fees paid is the sum\n        // of the LP fees, the relayer fees and the instant relay fee.\n        uint256 feesTotal =\n            _getAmountFromPct(\n                relayData.realizedLpFeePct + depositData.slowRelayFeePct + depositData.instantRelayFeePct,\n                depositData.amount\n            );\n        // If the L1 token is WETH then: a) pull WETH from instant relayer b) unwrap WETH c) send ETH to recipient.\n        uint256 recipientAmount = depositData.amount - feesTotal;\n\n        bonds += totalBond;\n        pendingReserves += depositData.amount; // Book off maximum liquidity used by this relay in the pending reserves.\n\n        instantRelays[instantRelayHash] = msg.sender;\n\n        l1Token.safeTransferFrom(msg.sender, address(this), recipientAmount + totalBond);\n\n        // If this is a weth pool then unwrap and send eth.\n        if (isWethPool) {\n            _unwrapWETHTo(depositData.l1Recipient, recipientAmount);\n            // Else, this is a normal ERC20 token. Send to recipient.\n        } else l1Token.safeTransfer(depositData.l1Recipient, recipientAmount);\n\n        emit DepositRelayed(depositHash, depositData, relayData, relayHash);\n        emit RelaySpedUp(depositHash, msg.sender, relayData);\n    }\n\n    /**\n     * @notice Called by Disputer to dispute an ongoing relay.\n     * @dev The result of this method is to always throw out the relay, providing an opportunity for another relay for\n     * the same deposit. Between the disputer and proposer, whoever is incorrect loses their bond. Whoever is correct\n     * gets it back + a payout.\n     * @dev Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.\n     * @param depositData the deposit data struct containing all the user's deposit information.\n     * @param relayData RelayData logged in the disputed relay.\n     */\n    function disputeRelay(DepositData memory depositData, RelayData memory relayData) public nonReentrant() {\n        require(relayData.priceRequestTime + optimisticOracleLiveness > getCurrentTime(), \"Past liveness\");\n        require(relayData.relayState == RelayState.Pending, \"Not disputable\");\n        // Validate the input data.\n        bytes32 depositHash = _getDepositHash(depositData);\n        _validateRelayDataHash(depositHash, relayData);\n\n        // Submit the proposal and dispute to the OO.\n        bytes32 relayHash = _getRelayHash(depositData, relayData);\n\n        // Note: in some cases this will fail due to changes in the OO and the method will refund the relayer.\n        bool success =\n            _requestProposeDispute(\n                relayData.slowRelayer,\n                msg.sender,\n                relayData.proposerBond,\n                relayData.finalFee,\n                _getRelayAncillaryData(relayHash)\n            );\n\n        // Drop the relay and remove the bond from the tracked bonds.\n        bonds -= relayData.finalFee + relayData.proposerBond;\n        pendingReserves -= depositData.amount;\n        delete relays[depositHash];\n        if (success) emit RelayDisputed(depositHash, _getRelayDataHash(relayData), msg.sender);\n        else emit RelayCanceled(depositHash, _getRelayDataHash(relayData), msg.sender);\n    }\n\n    /**\n     * @notice Called by Relayer to execute a slow relay from L2 to L1, fulfilling a corresponding deposit order.\n     * @dev There can only be one pending relay for a deposit.\n     * @dev Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.\n     * @dev This function can only be called if relays are enabled for this bridge pool.\n     * @param depositData the deposit data struct containing all the user's deposit information.\n     * @param realizedLpFeePct LP fee calculated off-chain considering the L1 pool liquidity at deposit time, before\n     *      quoteTimestamp. The OO acts to verify the correctness of this realized fee. Cannot exceed 50%.\n     */\n    function relayDeposit(DepositData memory depositData, uint64 realizedLpFeePct)\n        public\n        onlyIfRelaysEnabld()\n        nonReentrant()\n    {\n        // The realizedLPFeePct should never be greater than 0.5e18 and the slow and instant relay fees should never be\n        // more than 0.25e18 each. Therefore, the sum of all fee types can never exceed 1e18 (or 100%).\n        require(\n            depositData.slowRelayFeePct <= 0.25e18 &&\n                depositData.instantRelayFeePct <= 0.25e18 &&\n                realizedLpFeePct <= 0.5e18,\n            \"Invalid fees\"\n        );\n\n        // Check if there is a pending relay for this deposit.\n        bytes32 depositHash = _getDepositHash(depositData);\n\n        // Note: A disputed relay deletes the stored relay hash and enables this require statement to pass.\n        require(relays[depositHash] == bytes32(0), \"Pending relay exists\");\n\n        // If no pending relay for this deposit, then associate the caller's relay attempt with it.\n        uint32 priceRequestTime = uint32(getCurrentTime());\n\n        uint256 proposerBond = _getProposerBond(depositData.amount);\n\n        // Save hash of new relay attempt parameters.\n        // Note: The liveness for this relay can be changed in the BridgeAdmin, which means that each relay has a\n        // potentially variable liveness time. This should not provide any exploit opportunities, especially because\n        // the BridgeAdmin state (including the liveness value) is permissioned to the cross domained owner.\n        RelayData memory relayData =\n            RelayData({\n                relayState: RelayState.Pending,\n                slowRelayer: msg.sender,\n                relayId: numberOfRelays++, // Note: Increment numberOfRelays at the same time as setting relayId to its current value.\n                realizedLpFeePct: realizedLpFeePct,\n                priceRequestTime: priceRequestTime,\n                proposerBond: proposerBond,\n                finalFee: l1TokenFinalFee\n            });\n        relays[depositHash] = _getRelayDataHash(relayData);\n\n        bytes32 relayHash = _getRelayHash(depositData, relayData);\n\n        // Sanity check that pool has enough balance to cover relay amount + proposer reward. Reward amount will be\n        // paid on settlement after the OptimisticOracle price request has passed the challenge period.\n        // Note: liquidReserves should always be <= balance - bonds.\n        require(liquidReserves - pendingReserves >= depositData.amount, \"Insufficient pool balance\");\n\n        // Compute total proposal bond and pull from caller so that the OptimisticOracle can pull it from here.\n        uint256 totalBond = proposerBond + l1TokenFinalFee;\n        pendingReserves += depositData.amount; // Book off maximum liquidity used by this relay in the pending reserves.\n        bonds += totalBond;\n\n        l1Token.safeTransferFrom(msg.sender, address(this), totalBond);\n        emit DepositRelayed(depositHash, depositData, relayData, relayHash);\n    }\n\n    /**\n     * @notice Instantly relay a deposit amount minus fees to the l1Recipient. Instant relayer earns a reward following\n     * the pending relay challenge period.\n     * @dev We assume that the caller has performed an off-chain check that the deposit data they are attempting to\n     * relay is valid. If the deposit data is invalid, then the instant relayer has no recourse to receive their funds\n     * back after the invalid deposit data is disputed. Moreover, no one will be able to resubmit a relay for the\n     * invalid deposit data because they know it will get disputed again. On the other hand, if the deposit data is\n     * valid, then even if it is falsely disputed, the instant relayer will eventually get reimbursed because someone\n     * else will be incentivized to resubmit the relay to earn slow relayer rewards. Once the valid relay is finalized,\n     * the instant relayer will be reimbursed. Therefore, the caller has the same responsibility as the disputer in\n     * validating the relay data.\n     * @dev Caller must have approved this contract to spend the deposit amount of L1 tokens to relay. There can only\n     * be one instant relayer per relay attempt. You cannot speed up a relay that is past liveness.\n     * @param depositData Unique set of L2 deposit data that caller is trying to instantly relay.\n     * @param relayData Parameters of Relay that caller is attempting to speedup. Must hash to the stored relay hash\n     * for this deposit or this method will revert.\n     */\n    function speedUpRelay(DepositData memory depositData, RelayData memory relayData) public nonReentrant() {\n        bytes32 depositHash = _getDepositHash(depositData);\n        _validateRelayDataHash(depositHash, relayData);\n        bytes32 instantRelayHash = _getInstantRelayHash(depositHash, relayData);\n        require(\n            // Can only speed up a pending relay without an existing instant relay associated with it.\n            getCurrentTime() < relayData.priceRequestTime + optimisticOracleLiveness &&\n                relayData.relayState == RelayState.Pending &&\n                instantRelays[instantRelayHash] == address(0),\n            \"Relay cannot be sped up\"\n        );\n        instantRelays[instantRelayHash] = msg.sender;\n\n        // Pull relay amount minus fees from caller and send to the deposit l1Recipient. The total fees paid is the sum\n        // of the LP fees, the relayer fees and the instant relay fee.\n        uint256 feesTotal =\n            _getAmountFromPct(\n                relayData.realizedLpFeePct + depositData.slowRelayFeePct + depositData.instantRelayFeePct,\n                depositData.amount\n            );\n        // If the L1 token is WETH then: a) pull WETH from instant relayer b) unwrap WETH c) send ETH to recipient.\n        uint256 recipientAmount = depositData.amount - feesTotal;\n        if (isWethPool) {\n            l1Token.safeTransferFrom(msg.sender, address(this), recipientAmount);\n            _unwrapWETHTo(depositData.l1Recipient, recipientAmount);\n            // Else, this is a normal ERC20 token. Send to recipient.\n        } else l1Token.safeTransferFrom(msg.sender, depositData.l1Recipient, recipientAmount);\n\n        emit RelaySpedUp(depositHash, msg.sender, relayData);\n    }\n\n    /**\n     * @notice Reward relayers if a pending relay price request has a price available on the OptimisticOracle. Mark\n     * the relay as complete.\n     * @dev We use the relayData and depositData to compute the ancillary data that the relay price request is uniquely\n     * associated with on the OptimisticOracle. If the price request passed in does not match the pending relay price\n     * request, then this will revert.\n     * @param depositData Unique set of L2 deposit data that caller is trying to settle a relay for.\n     * @param relayData Parameters of Relay that caller is attempting to settle. Must hash to the stored relay hash\n     * for this deposit.\n     */\n    function settleRelay(DepositData memory depositData, RelayData memory relayData) public nonReentrant() {\n        bytes32 depositHash = _getDepositHash(depositData);\n        _validateRelayDataHash(depositHash, relayData);\n        require(relayData.relayState == RelayState.Pending, \"Already settled\");\n        uint32 expirationTime = relayData.priceRequestTime + optimisticOracleLiveness;\n        require(expirationTime <= getCurrentTime(), \"Not settleable yet\");\n\n        // Note: this check is to give the relayer a small, but reasonable amount of time to complete the relay before\n        // before it can be \"stolen\" by someone else. This is to ensure there is an incentive to settle relays quickly.\n        require(\n            msg.sender == relayData.slowRelayer || getCurrentTime() > expirationTime + 15 minutes,\n            \"Not slow relayer\"\n        );\n\n        // Update the relay state to Finalized. This prevents any re-settling of a relay.\n        relays[depositHash] = _getRelayDataHash(\n            RelayData({\n                relayState: RelayState.Finalized,\n                slowRelayer: relayData.slowRelayer,\n                relayId: relayData.relayId,\n                realizedLpFeePct: relayData.realizedLpFeePct,\n                priceRequestTime: relayData.priceRequestTime,\n                proposerBond: relayData.proposerBond,\n                finalFee: relayData.finalFee\n            })\n        );\n\n        // Reward relayers and pay out l1Recipient.\n        // At this point there are two possible cases:\n        // - This was a slow relay: In this case, a) pay the slow relayer their reward and b) pay the l1Recipient of the\n        //      amount minus the realized LP fee and the slow Relay fee. The transfer was not sped up so no instant fee.\n        // - This was an instant relay: In this case, a) pay the slow relayer their reward and b) pay the instant relayer\n        //      the full bridging amount, minus the realized LP fee and minus the slow relay fee. When the instant\n        //      relayer called speedUpRelay they were docked this same amount, minus the instant relayer fee. As a\n        //      result, they are effectively paid what they spent when speeding up the relay + the instantRelayFee.\n\n        uint256 instantRelayerOrRecipientAmount =\n            depositData.amount -\n                _getAmountFromPct(relayData.realizedLpFeePct + depositData.slowRelayFeePct, depositData.amount);\n\n        // Refund the instant relayer iff the instant relay params match the approved relay.\n        bytes32 instantRelayHash = _getInstantRelayHash(depositHash, relayData);\n        address instantRelayer = instantRelays[instantRelayHash];\n\n        // If this is the WETH pool and the instant relayer is is address 0x0 (i.e the relay was not sped up) then:\n        // a) withdraw WETH to ETH and b) send the ETH to the recipient.\n        if (isWethPool && instantRelayer == address(0)) {\n            _unwrapWETHTo(depositData.l1Recipient, instantRelayerOrRecipientAmount);\n            // Else, this is a normal slow relay being finalizes where the contract sends ERC20 to the recipient OR this\n            // is the finalization of an instant relay where we need to reimburse the instant relayer in WETH.\n        } else\n            l1Token.safeTransfer(\n                instantRelayer != address(0) ? instantRelayer : depositData.l1Recipient,\n                instantRelayerOrRecipientAmount\n            );\n\n        // There is a fee and a bond to pay out. The fee goes to whoever settles. The bond always goes back to the\n        // slow relayer.\n        // Note: for gas efficiency, we use an if so we can combine these transfers in the event that they are the same\n        // address.\n        uint256 slowRelayerReward = _getAmountFromPct(depositData.slowRelayFeePct, depositData.amount);\n        uint256 totalBond = relayData.finalFee + relayData.proposerBond;\n        if (relayData.slowRelayer == msg.sender)\n            l1Token.safeTransfer(relayData.slowRelayer, slowRelayerReward + totalBond);\n        else {\n            l1Token.safeTransfer(relayData.slowRelayer, totalBond);\n            l1Token.safeTransfer(msg.sender, slowRelayerReward);\n        }\n\n        uint256 totalReservesSent = instantRelayerOrRecipientAmount + slowRelayerReward;\n\n        // Update reserves by amounts changed and allocated LP fees.\n        pendingReserves -= depositData.amount;\n        liquidReserves -= totalReservesSent;\n        utilizedReserves += int256(totalReservesSent);\n        bonds -= totalBond;\n        _updateAccumulatedLpFees();\n        _allocateLpFees(_getAmountFromPct(relayData.realizedLpFeePct, depositData.amount));\n\n        emit RelaySettled(depositHash, msg.sender, relayData);\n\n        // Clean up state storage and receive gas refund. This also prevents `priceDisputed()` from being able to reset\n        // this newly Finalized relay state.\n        delete instantRelays[instantRelayHash];\n    }\n\n    /**\n     * @notice Synchronize any balance changes in this contract with the utilized & liquid reserves. This would be done\n     * at the conclusion of an L2 -> L1 token transfer via the canonical token bridge.\n     */\n    function sync() public nonReentrant() {\n        _sync();\n    }\n\n    /**\n     * @notice Computes the exchange rate between LP tokens and L1Tokens. Used when adding/removing liquidity.\n     * @return The updated exchange rate between LP tokens and L1 tokens.\n     */\n    function exchangeRateCurrent() public nonReentrant() returns (uint256) {\n        return _exchangeRateCurrent();\n    }\n\n    /**\n     * @notice Computes the current liquidity utilization ratio.\n     * @dev Used in computing realizedLpFeePct off-chain.\n     * @return The current utilization ratio.\n     */\n    function liquidityUtilizationCurrent() public nonReentrant() returns (uint256) {\n        return _liquidityUtilizationPostRelay(0);\n    }\n\n    /**\n     * @notice Computes the liquidity utilization ratio post a relay of known size.\n     * @dev Used in computing realizedLpFeePct off-chain.\n     * @param relayedAmount Size of the relayed deposit to factor into the utilization calculation.\n     * @return The updated utilization ratio accounting for a new `relayedAmount`.\n     */\n    function liquidityUtilizationPostRelay(uint256 relayedAmount) public nonReentrant() returns (uint256) {\n        return _liquidityUtilizationPostRelay(relayedAmount);\n    }\n\n    /**\n     * @notice Return both the current utilization value and liquidity utilization post the relay.\n     * @dev Used in computing realizedLpFeePct off-chain.\n     * @param relayedAmount Size of the relayed deposit to factor into the utilization calculation.\n     * @return utilizationCurrent The current utilization ratio.\n     * @return utilizationPostRelay The updated utilization ratio accounting for a new `relayedAmount`.\n     */\n    function getLiquidityUtilization(uint256 relayedAmount)\n        public\n        nonReentrant()\n        returns (uint256 utilizationCurrent, uint256 utilizationPostRelay)\n    {\n        return (_liquidityUtilizationPostRelay(0), _liquidityUtilizationPostRelay(relayedAmount));\n    }\n\n    /**\n     * @notice Updates the address stored in this contract for the OptimisticOracle and the Store to the latest versions\n     * set in the the Finder. Also pull finalFee Store these as local variables to make relay methods gas efficient.\n     * @dev There is no risk of leaving this function public for anyone to call as in all cases we want the addresses\n     * in this contract to map to the latest version in the Finder and store the latest final fee.\n     */\n    function syncUmaEcosystemParams() public nonReentrant() {\n        FinderInterface finder = FinderInterface(bridgeAdmin.finder());\n        optimisticOracle = SkinnyOptimisticOracleInterface(\n            finder.getImplementationAddress(OracleInterfaces.SkinnyOptimisticOracle)\n        );\n\n        store = StoreInterface(finder.getImplementationAddress(OracleInterfaces.Store));\n        l1TokenFinalFee = store.computeFinalFee(address(l1Token)).rawValue;\n    }\n\n    /**\n     * @notice Updates the values of stored constants for the proposerBondPct, optimisticOracleLiveness and identifier\n     * to that set in the bridge Admin. We store these as local variables to make the relay methods more gas efficient.\n     * @dev There is no risk of leaving this function public for anyone to call as in all cases we want these values\n     * in this contract to map to the latest version set in the BridgeAdmin.\n     */\n    function syncWithBridgeAdminParams() public nonReentrant() {\n        proposerBondPct = bridgeAdmin.proposerBondPct();\n        optimisticOracleLiveness = bridgeAdmin.optimisticOracleLiveness();\n        identifier = bridgeAdmin.identifier();\n    }\n\n    /************************************\n     *          ADMIN FUNCTIONS         *\n     ************************************/\n\n    /**\n     * @notice Enable the current bridge admin to transfer admin to to a new address.\n     * @dev Caller must be BridgeAdmin contract.\n     * @param _newAdmin Admin address of the new admin.\n     */\n    function changeAdmin(address _newAdmin) public override onlyBridgeAdmin() nonReentrant() {\n        bridgeAdmin = BridgeAdminInterface(_newAdmin);\n        emit BridgePoolAdminTransferred(msg.sender, _newAdmin);\n    }\n\n    /**\n     * @notice Enable the bridge admin to change the decay rate at which LP shares accumulate fees. The higher this\n     * value, the faster LP shares realize pending fees.\n     * @dev Caller must be BridgeAdmin contract.\n     * @param _newLpFeeRatePerSecond The new rate to set.\n     */\n    function setLpFeeRatePerSecond(uint64 _newLpFeeRatePerSecond) public override onlyBridgeAdmin() nonReentrant() {\n        lpFeeRatePerSecond = _newLpFeeRatePerSecond;\n        emit LpFeeRateSet(lpFeeRatePerSecond);\n    }\n\n    /**\n     * @notice Enable the bridge admin to enable/disable relays for this pool. Acts as a pause. Only effects\n     * relayDeposit and relayAndSpeedUp methods. ALl other contract logic remains functional after a pause.\n     * @dev Caller must be BridgeAdmin contract.\n     * @param _relaysEnabled The new relaysEnabled state.\n     */\n    function setRelaysEnabled(bool _relaysEnabled) public override onlyBridgeAdmin() nonReentrant() {\n        relaysEnabled = _relaysEnabled;\n        emit RelaysEnabledSet(_relaysEnabled);\n    }\n\n    /************************************\n     *           VIEW FUNCTIONS         *\n     ************************************/\n\n    /**\n     * @notice Computes the current amount of unallocated fees that have accumulated from the previous time this the\n     * contract was called.\n     */\n    function getAccumulatedFees() public view nonReentrantView() returns (uint256) {\n        return _getAccumulatedFees();\n    }\n\n    /**\n     * @notice Returns ancillary data containing all relevant Relay data that voters can format into UTF8 and use to\n     * determine if the relay is valid.\n     * @dev Helpful method to test that ancillary data is constructed properly. We should consider removing if we don't\n     * anticipate off-chain bots or users to call this method.\n     * @param depositData Contains L2 deposit information used by off-chain validators to validate relay.\n     * @param relayData Contains relay information used by off-chain validators to validate relay.\n     * @return bytes New ancillary data that can be decoded into UTF8.\n     */\n    function getRelayAncillaryData(DepositData memory depositData, RelayData memory relayData)\n        public\n        view\n        nonReentrantView()\n        returns (bytes memory)\n    {\n        return _getRelayAncillaryData(_getRelayHash(depositData, relayData));\n    }\n\n    /**************************************\n     *    INTERNAL & PRIVATE FUNCTIONS    *\n     **************************************/\n\n    function _liquidityUtilizationPostRelay(uint256 relayedAmount) internal returns (uint256) {\n        _sync(); // Fetch any balance changes due to token bridging finalization and factor them in.\n\n        // liquidityUtilizationRatio :=\n        // (relayedAmount + pendingReserves + max(utilizedReserves,0)) / (liquidReserves + max(utilizedReserves,0))\n        // UtilizedReserves has a dual meaning: if it's greater than zero then it represents funds pending in the bridge\n        // that will flow from L2 to L1. In this case, we can use it normally in the equation. However, if it is\n        // negative, then it is already counted in liquidReserves. This occurs if tokens are transferred directly to the\n        // contract. In this case, ignore it as it is captured in liquid reserves and has no meaning in the numerator.\n        uint256 flooredUtilizedReserves = utilizedReserves > 0 ? uint256(utilizedReserves) : 0;\n        uint256 numerator = relayedAmount + pendingReserves + flooredUtilizedReserves;\n        uint256 denominator = liquidReserves + flooredUtilizedReserves;\n\n        // If the denominator equals zero, return 1e18 (max utilization).\n        if (denominator == 0) return 1e18;\n\n        // In all other cases, return the utilization ratio.\n        return (numerator * 1e18) / denominator;\n    }\n\n    function _sync() internal {\n        // Check if the l1Token balance of the contract is greater than the liquidReserves. If it is then the bridging\n        // action from L2 -> L1 has concluded and the local accounting can be updated.\n        uint256 l1TokenBalance = l1Token.balanceOf(address(this)) - bonds;\n        if (l1TokenBalance > liquidReserves) {\n            // utilizedReserves can go to less than zero. This will happen if the accumulated fees exceeds the current\n            // outstanding utilization. In other words, if outstanding bridging transfers are 0 then utilizedReserves\n            // will equal the total LP fees accumulated over all time.\n            utilizedReserves -= int256(l1TokenBalance - liquidReserves);\n            liquidReserves = l1TokenBalance;\n        }\n    }\n\n    function _exchangeRateCurrent() internal returns (uint256) {\n        if (totalSupply() == 0) return 1e18; // initial rate is 1 pre any mint action.\n\n        // First, update fee counters and local accounting of finalized transfers from L2 -> L1.\n        _updateAccumulatedLpFees(); // Accumulate all allocated fees from the last time this method was called.\n        _sync(); // Fetch any balance changes due to token bridging finalization and factor them in.\n\n        // ExchangeRate := (liquidReserves + utilizedReserves - undistributedLpFees) / lpTokenSupply\n        // Note that utilizedReserves can be negative. If this is the case, then liquidReserves is offset by an equal\n        // and opposite size. LiquidReserves + utilizedReserves will always be larger than undistributedLpFees so this\n        // int will always be positive so there is no risk in underflow in type casting in the return line.\n        int256 numerator = int256(liquidReserves) + utilizedReserves - int256(undistributedLpFees);\n        return (uint256(numerator) * 1e18) / totalSupply();\n    }\n\n    // Return UTF8-decodable ancillary data for relay price request associated with relay hash.\n    function _getRelayAncillaryData(bytes32 relayHash) private pure returns (bytes memory) {\n        return AncillaryData.appendKeyValueBytes32(\"\", \"relayHash\", relayHash);\n    }\n\n    // Returns hash of unique relay and deposit event. This is added to the relay request's ancillary data.\n    function _getRelayHash(DepositData memory depositData, RelayData memory relayData) private view returns (bytes32) {\n        return keccak256(abi.encode(depositData, relayData.relayId, relayData.realizedLpFeePct, address(l1Token)));\n    }\n\n    // Return hash of relay data, which is stored in state and mapped to a deposit hash.\n    function _getRelayDataHash(RelayData memory relayData) private pure returns (bytes32) {\n        return keccak256(abi.encode(relayData));\n    }\n\n    // Reverts if the stored relay data hash for `depositHash` does not match `_relayData`.\n    function _validateRelayDataHash(bytes32 depositHash, RelayData memory relayData) private view {\n        require(\n            relays[depositHash] == _getRelayDataHash(relayData),\n            \"Hashed relay params do not match existing relay hash for deposit\"\n        );\n    }\n\n    // Return hash of unique instant relay and deposit event. This is stored in state and mapped to a deposit hash.\n    function _getInstantRelayHash(bytes32 depositHash, RelayData memory relayData) private pure returns (bytes32) {\n        // Only include parameters that affect the \"correctness\" of an instant relay. For example, the realized LP fee\n        // % directly affects how many tokens the instant relayer needs to send to the user, whereas the address of the\n        // instant relayer does not matter for determining whether an instant relay is \"correct\".\n        return keccak256(abi.encode(depositHash, relayData.realizedLpFeePct));\n    }\n\n    function _getAccumulatedFees() internal view returns (uint256) {\n        // UnallocatedLpFees := min(undistributedLpFees*lpFeeRatePerSecond*timeFromLastInteraction,undistributedLpFees)\n        // The min acts to pay out all fees in the case the equation returns more than the remaining a fees.\n        uint256 possibleUnpaidFees =\n            (undistributedLpFees * lpFeeRatePerSecond * (getCurrentTime() - lastLpFeeUpdate)) / (1e18);\n        return possibleUnpaidFees < undistributedLpFees ? possibleUnpaidFees : undistributedLpFees;\n    }\n\n    // Update internal fee counters by adding in any accumulated fees from the last time this logic was called.\n    function _updateAccumulatedLpFees() internal {\n        // Calculate the unallocatedAccumulatedFees from the last time the contract was called.\n        uint256 unallocatedAccumulatedFees = _getAccumulatedFees();\n\n        // Decrement the undistributedLpFees by the amount of accumulated fees.\n        undistributedLpFees = undistributedLpFees - unallocatedAccumulatedFees;\n\n        lastLpFeeUpdate = uint32(getCurrentTime());\n    }\n\n    // Allocate fees to the LPs by incrementing counters.\n    function _allocateLpFees(uint256 allocatedLpFees) internal {\n        // Add to the total undistributed LP fees and the utilized reserves. Adding it to the utilized reserves acts to\n        // track the fees while they are in transit.\n        undistributedLpFees += allocatedLpFees;\n        utilizedReserves += int256(allocatedLpFees);\n    }\n\n    function _getAmountFromPct(uint64 percent, uint256 amount) private pure returns (uint256) {\n        return (percent * amount) / 1e18;\n    }\n\n    function _getProposerBond(uint256 amount) private view returns (uint256) {\n        return _getAmountFromPct(proposerBondPct, amount);\n    }\n\n    function _getDepositHash(DepositData memory depositData) private view returns (bytes32) {\n        return keccak256(abi.encode(depositData, address(l1Token)));\n    }\n\n    // Proposes new price of True for relay event associated with `customAncillaryData` to optimistic oracle. If anyone\n    // disagrees with the relay parameters and whether they map to an L2 deposit, they can dispute with the oracle.\n    function _requestProposeDispute(\n        address proposer,\n        address disputer,\n        uint256 proposerBond,\n        uint256 finalFee,\n        bytes memory customAncillaryData\n    ) private returns (bool) {\n        uint256 totalBond = finalFee + proposerBond;\n        l1Token.safeApprove(address(optimisticOracle), totalBond);\n        try\n            optimisticOracle.requestAndProposePriceFor(\n                identifier,\n                uint32(getCurrentTime()),\n                customAncillaryData,\n                IERC20(l1Token),\n                // Set reward to 0, since we'll settle proposer reward payouts directly from this contract after a relay\n                // proposal has passed the challenge period.\n                0,\n                // Set the Optimistic oracle proposer bond for the price request.\n                proposerBond,\n                // Set the Optimistic oracle liveness for the price request.\n                optimisticOracleLiveness,\n                proposer,\n                // Canonical value representing \"True\"; i.e. the proposed relay is valid.\n                int256(1e18)\n            )\n        returns (uint256 bondSpent) {\n            if (bondSpent < totalBond) {\n                // If the OO pulls less (due to a change in final fee), refund the proposer.\n                uint256 refund = totalBond - bondSpent;\n                l1Token.safeTransfer(proposer, refund);\n                l1Token.safeApprove(address(optimisticOracle), 0);\n                totalBond = bondSpent;\n            }\n        } catch {\n            // If there's an error in the OO, this means something has changed to make this request undisputable.\n            // To ensure the request does not go through by default, refund the proposer and return early, allowing\n            // the calling method to delete the request, but with no additional recourse by the OO.\n            l1Token.safeTransfer(proposer, totalBond);\n            l1Token.safeApprove(address(optimisticOracle), 0);\n\n            // Return early noting that the attempt at a proposal + dispute did not succeed.\n            return false;\n        }\n\n        SkinnyOptimisticOracleInterface.Request memory request =\n            SkinnyOptimisticOracleInterface.Request({\n                proposer: proposer,\n                disputer: address(0),\n                currency: IERC20(l1Token),\n                settled: false,\n                proposedPrice: int256(1e18),\n                resolvedPrice: 0,\n                expirationTime: getCurrentTime() + optimisticOracleLiveness,\n                reward: 0,\n                finalFee: totalBond - proposerBond,\n                bond: proposerBond,\n                customLiveness: uint256(optimisticOracleLiveness)\n            });\n\n        // Note: don't pull funds until here to avoid any transfers that aren't needed.\n        l1Token.safeTransferFrom(msg.sender, address(this), totalBond);\n        l1Token.safeApprove(address(optimisticOracle), totalBond);\n        // Dispute the request that we just sent.\n        optimisticOracle.disputePriceFor(\n            identifier,\n            uint32(getCurrentTime()),\n            customAncillaryData,\n            request,\n            disputer,\n            address(this)\n        );\n\n        // Return true to denote that the proposal + dispute calls succeeded.\n        return true;\n    }\n\n    // Unwraps ETH and does a transfer to a recipient address. If the recipient is a smart contract then sends WETH.\n    function _unwrapWETHTo(address payable to, uint256 amount) internal {\n        if (address(to).isContract()) {\n            l1Token.safeTransfer(to, amount);\n        } else {\n            WETH9Like(address(l1Token)).withdraw(amount);\n            to.transfer(amount);\n        }\n    }\n\n    // Added to enable the BridgePool to receive ETH. used when unwrapping Weth.\n    receive() external payable {}\n}\n\n/**\n * @notice This is the BridgePool contract that should be deployed on live networks. It is exactly the same as the\n * regular BridgePool contract, but it overrides getCurrentTime to make the call a simply return block.timestamp with\n * no branching or storage queries. This is done to save gas.\n */\ncontract BridgePoolProd is BridgePool {\n    constructor(\n        string memory _lpTokenName,\n        string memory _lpTokenSymbol,\n        address _bridgeAdmin,\n        address _l1Token,\n        uint64 _lpFeeRatePerSecond,\n        bool _isWethPool,\n        address _timer\n    ) BridgePool(_lpTokenName, _lpTokenSymbol, _bridgeAdmin, _l1Token, _lpFeeRatePerSecond, _isWethPool, _timer) {}\n\n    function getCurrentTime() public view virtual override returns (uint256) {\n        return block.timestamp;\n    }\n}\n"
            },
            "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @notice Helper view methods designed to be called by BridgePool contracts.\n */\ninterface BridgeAdminInterface {\n    event SetDepositContracts(\n        uint256 indexed chainId,\n        address indexed l2DepositContract,\n        address indexed l2MessengerContract\n    );\n    event SetCrossDomainAdmin(uint256 indexed chainId, address indexed newAdmin);\n    event SetRelayIdentifier(bytes32 indexed identifier);\n    event SetOptimisticOracleLiveness(uint32 indexed liveness);\n    event SetProposerBondPct(uint64 indexed proposerBondPct);\n    event WhitelistToken(uint256 chainId, address indexed l1Token, address indexed l2Token, address indexed bridgePool);\n    event SetMinimumBridgingDelay(uint256 indexed chainId, uint64 newMinimumBridgingDelay);\n    event DepositsEnabled(uint256 indexed chainId, address indexed l2Token, bool depositsEnabled);\n    event BridgePoolsAdminTransferred(address[] bridgePools, address indexed newAdmin);\n    event SetLpFeeRate(address indexed bridgePool, uint64 newLpFeeRatePerSecond);\n\n    function finder() external view returns (address);\n\n    struct DepositUtilityContracts {\n        address depositContract; // L2 deposit contract where cross-chain relays originate.\n        address messengerContract; // L1 helper contract that can send a message to the L2 with the mapped network ID.\n    }\n\n    function depositContracts(uint256) external view returns (DepositUtilityContracts memory);\n\n    struct L1TokenRelationships {\n        mapping(uint256 => address) l2Tokens; // L2 Chain Id to l2Token address.\n        address bridgePool;\n    }\n\n    function whitelistedTokens(address, uint256) external view returns (address l2Token, address bridgePool);\n\n    function optimisticOracleLiveness() external view returns (uint32);\n\n    function proposerBondPct() external view returns (uint64);\n\n    function identifier() external view returns (bytes32);\n}\n"
            },
            "contracts/insured-bridge/interfaces/BridgePoolInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ninterface BridgePoolInterface {\n    function l1Token() external view returns (IERC20);\n\n    function changeAdmin(address newAdmin) external;\n\n    function setLpFeeRatePerSecond(uint64 _newLpFeeRatePerSecond) external;\n\n    function setRelaysEnabled(bool _relaysEnabled) external;\n}\n"
            },
            "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"../interfaces/OptimisticOracleInterface.sol\";\n\n/**\n * @title Interface for the gas-cost-reduced version of the OptimisticOracle.\n * @notice Differences from normal OptimisticOracle:\n * - refundOnDispute: flag is removed, by default there are no refunds on disputes.\n * - customizing request parameters: In the OptimisticOracle, parameters like `bond` and `customLiveness` can be reset\n *   after a request is already made via `requestPrice`. In the SkinnyOptimisticOracle, these parameters can only be\n *   set in `requestPrice`, which has an expanded input set.\n * - settleAndGetPrice: Replaced by `settle`, which can only be called once per settleable request. The resolved price\n *   can be fetched via the `Settle` event or the return value of `settle`.\n * - general changes to interface: Functions that interact with existing requests all require the parameters of the\n *   request to modify to be passed as input. These parameters must match with the existing request parameters or the\n *   function will revert. This change reflects the internal refactor to store hashed request parameters instead of the\n *   full request struct.\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\n */\nabstract contract SkinnyOptimisticOracleInterface {\n    // Struct representing a price request. Note that this differs from the OptimisticOracleInterface's Request struct\n    // in that refundOnDispute is removed.\n    struct Request {\n        address proposer; // Address of the proposer.\n        address disputer; // Address of the disputer.\n        IERC20 currency; // ERC20 token used to pay rewards and fees.\n        bool settled; // True if the request is settled.\n        int256 proposedPrice; // Price that the proposer submitted.\n        int256 resolvedPrice; // Price resolved once the request is settled.\n        uint256 expirationTime; // Time at which the request auto-settles without a dispute.\n        uint256 reward; // Amount of the currency to pay to the proposer on settlement.\n        uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\n        uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\n        uint256 customLiveness; // Custom liveness value set by the requester.\n    }\n\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\n    // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\n    // to accept a price request made with ancillary data length over a certain size.\n    uint256 public constant ancillaryBytesLimit = 8192;\n\n    /**\n     * @notice Requests a new price.\n     * @param identifier price identifier being requested.\n     * @param timestamp timestamp of the price being requested.\n     * @param ancillaryData ancillary data representing additional args being passed with the price request.\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n     *               which could make sense if the contract requests and proposes the value in the same call or\n     *               provides its own reward system.\n     * @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\n     * @param customLiveness custom proposal liveness to set for request.\n     * @return totalBond default bond + final fee that the proposer and disputer will be required to pay.\n     */\n    function requestPrice(\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        IERC20 currency,\n        uint256 reward,\n        uint256 bond,\n        uint256 customLiveness\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n     * from this proposal. However, any bonds are pulled from the caller.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * propose a price for.\n     * @param proposer address to set as the proposer.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function proposePriceFor(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request,\n        address proposer,\n        int256 proposedPrice\n    ) public virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Proposes a price value where caller is the proposer.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * propose a price for.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function proposePrice(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request,\n        int256 proposedPrice\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Combines logic of requestPrice and proposePrice while taking advantage of gas savings from not having to\n     * overwrite Request params that a normal requestPrice() => proposePrice() flow would entail. Note: The proposer\n     * will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\n     * @dev The caller is the requester, but the proposer can be customized.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n     *               which could make sense if the contract requests and proposes the value in the same call or\n     *               provides its own reward system.\n     * @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\n     * @param customLiveness custom proposal liveness to set for request.\n     * @param proposer address to set as the proposer.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function requestAndProposePriceFor(\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        IERC20 currency,\n        uint256 reward,\n        uint256 bond,\n        uint256 customLiveness,\n        address proposer,\n        int256 proposedPrice\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n     * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * dispute.\n     * @param disputer address to set as the disputer.\n     * @param requester sender of the initial price request.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\n     */\n    function disputePriceFor(\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request,\n        address disputer,\n        address requester\n    ) public virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Disputes a price request with an active proposal where caller is the disputer.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * dispute.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\n     */\n    function disputePrice(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters whose hash must match the request that the caller wants to\n     * settle.\n     * @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n     * the returned bonds as well as additional rewards.\n     * @return resolvedPrice the price that the request settled to.\n     */\n    function settle(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request\n    ) external virtual returns (uint256 payout, int256 resolvedPrice);\n\n    /**\n     * @notice Computes the current state of a price request. See the State enum for more details.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters.\n     * @return the State.\n     */\n    function getState(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request\n    ) external virtual returns (OptimisticOracleInterface.State);\n\n    /**\n     * @notice Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param request price request parameters. The hash of these parameters must match with the request hash that is\n     * associated with the price request unique ID {requester, identifier, timestamp, ancillaryData}, or this method\n     * will revert.\n     * @return boolean indicating true if price exists and false if not.\n     */\n    function hasPrice(\n        address requester,\n        bytes32 identifier,\n        uint32 timestamp,\n        bytes memory ancillaryData,\n        Request memory request\n    ) public virtual returns (bool);\n\n    /**\n     * @notice Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param requester sender of the initial price request.\n     * @return the stamped ancillary bytes.\n     */\n    function stampAncillaryData(bytes memory ancillaryData, address requester)\n        public\n        pure\n        virtual\n        returns (bytes memory);\n}\n"
            },
            "contracts/oracle/interfaces/StoreInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"../../common/implementation/FixedPoint.sol\";\n\n/**\n * @title Interface that allows financial contracts to pay oracle fees for their use of the system.\n */\ninterface StoreInterface {\n    /**\n     * @notice Pays Oracle fees in ETH to the store.\n     * @dev To be used by contracts whose margin currency is ETH.\n     */\n    function payOracleFees() external payable;\n\n    /**\n     * @notice Pays oracle fees in the margin currency, erc20Address, to the store.\n     * @dev To be used if the margin currency is an ERC20 token rather than ETH.\n     * @param erc20Address address of the ERC20 token used to pay the fee.\n     * @param amount number of tokens to transfer. An approval for at least this amount must exist.\n     */\n    function payOracleFeesErc20(address erc20Address, FixedPoint.Unsigned calldata amount) external;\n\n    /**\n     * @notice Computes the regular oracle fees that a contract should pay for a period.\n     * @param startTime defines the beginning time from which the fee is paid.\n     * @param endTime end time until which the fee is paid.\n     * @param pfc \"profit from corruption\", or the maximum amount of margin currency that a\n     * token sponsor could extract from the contract through corrupting the price feed in their favor.\n     * @return regularFee amount owed for the duration from start to end time for the given pfc.\n     * @return latePenalty for paying the fee after the deadline.\n     */\n    function computeRegularFee(\n        uint256 startTime,\n        uint256 endTime,\n        FixedPoint.Unsigned calldata pfc\n    ) external view returns (FixedPoint.Unsigned memory regularFee, FixedPoint.Unsigned memory latePenalty);\n\n    /**\n     * @notice Computes the final oracle fees that a contract should pay at settlement.\n     * @param currency token used to pay the final fee.\n     * @return finalFee amount due.\n     */\n    function computeFinalFee(address currency) external view returns (FixedPoint.Unsigned memory);\n}\n"
            },
            "contracts/oracle/interfaces/FinderInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Provides addresses of the live contracts implementing certain interfaces.\n * @dev Examples are the Oracle or Store interfaces.\n */\ninterface FinderInterface {\n    /**\n     * @notice Updates the address of the contract that implements `interfaceName`.\n     * @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\n     * @param implementationAddress address of the deployed contract that implements the interface.\n     */\n    function changeImplementationAddress(bytes32 interfaceName, address implementationAddress) external;\n\n    /**\n     * @notice Gets the address of the contract that implements the given `interfaceName`.\n     * @param interfaceName queried interface.\n     * @return implementationAddress address of the deployed contract that implements the interface.\n     */\n    function getImplementationAddress(bytes32 interfaceName) external view returns (address);\n}\n"
            },
            "contracts/oracle/implementation/Constants.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Stores common interface names used throughout the DVM by registration in the Finder.\n */\nlibrary OracleInterfaces {\n    bytes32 public constant Oracle = \"Oracle\";\n    bytes32 public constant IdentifierWhitelist = \"IdentifierWhitelist\";\n    bytes32 public constant Store = \"Store\";\n    bytes32 public constant FinancialContractsAdmin = \"FinancialContractsAdmin\";\n    bytes32 public constant Registry = \"Registry\";\n    bytes32 public constant CollateralWhitelist = \"CollateralWhitelist\";\n    bytes32 public constant OptimisticOracle = \"OptimisticOracle\";\n    bytes32 public constant Bridge = \"Bridge\";\n    bytes32 public constant GenericHandler = \"GenericHandler\";\n    bytes32 public constant SkinnyOptimisticOracle = \"SkinnyOptimisticOracle\";\n}\n\n/**\n * @title Commonly re-used values for contracts associated with the OptimisticOracle.\n */\nlibrary OptimisticOracleConstraints {\n    // Any price request submitted to the OptimisticOracle must contain ancillary data no larger than this value.\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` constant value otherwise it is possible\n    // that a price can be requested to the OptimisticOracle successfully, but cannot be resolved by the DVM which\n    // refuses to accept a price request made with ancillary data length over a certain size.\n    uint256 public constant ancillaryBytesLimit = 8192;\n}\n"
            },
            "contracts/common/implementation/AncillaryData.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Library for encoding and decoding ancillary data for DVM price requests.\n * @notice  We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via\n * web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value\n * dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity\n * smart contracts. More details on UMA's ancillary data guidelines below:\n * https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit\n */\nlibrary AncillaryData {\n    // This converts the bottom half of a bytes32 input to hex in a highly gas-optimized way.\n    // Source: the brilliant implementation at https://gitter.im/ethereum/solidity?at=5840d23416207f7b0ed08c9b.\n    function toUtf8Bytes32Bottom(bytes32 bytesIn) private pure returns (bytes32) {\n        unchecked {\n            uint256 x = uint256(bytesIn);\n\n            // Nibble interleave\n            x = x & 0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff;\n            x = (x | (x * 2**64)) & 0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff;\n            x = (x | (x * 2**32)) & 0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff;\n            x = (x | (x * 2**16)) & 0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff;\n            x = (x | (x * 2**8)) & 0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff;\n            x = (x | (x * 2**4)) & 0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f;\n\n            // Hex encode\n            uint256 h = (x & 0x0808080808080808080808080808080808080808080808080808080808080808) / 8;\n            uint256 i = (x & 0x0404040404040404040404040404040404040404040404040404040404040404) / 4;\n            uint256 j = (x & 0x0202020202020202020202020202020202020202020202020202020202020202) / 2;\n            x = x + (h & (i | j)) * 0x27 + 0x3030303030303030303030303030303030303030303030303030303030303030;\n\n            // Return the result.\n            return bytes32(x);\n        }\n    }\n\n    /**\n     * @notice Returns utf8-encoded bytes32 string that can be read via web3.utils.hexToUtf8.\n     * @dev Will return bytes32 in all lower case hex characters and without the leading 0x.\n     * This has minor changes from the toUtf8BytesAddress to control for the size of the input.\n     * @param bytesIn bytes32 to encode.\n     * @return utf8 encoded bytes32.\n     */\n    function toUtf8Bytes(bytes32 bytesIn) internal pure returns (bytes memory) {\n        return abi.encodePacked(toUtf8Bytes32Bottom(bytesIn >> 128), toUtf8Bytes32Bottom(bytesIn));\n    }\n\n    /**\n     * @notice Returns utf8-encoded address that can be read via web3.utils.hexToUtf8.\n     * Source: https://ethereum.stackexchange.com/questions/8346/convert-address-to-string/8447#8447\n     * @dev Will return address in all lower case characters and without the leading 0x.\n     * @param x address to encode.\n     * @return utf8 encoded address bytes.\n     */\n    function toUtf8BytesAddress(address x) internal pure returns (bytes memory) {\n        return\n            abi.encodePacked(toUtf8Bytes32Bottom(bytes32(bytes20(x)) >> 128), bytes8(toUtf8Bytes32Bottom(bytes20(x))));\n    }\n\n    /**\n     * @notice Converts a uint into a base-10, UTF-8 representation stored in a `string` type.\n     * @dev This method is based off of this code: https://stackoverflow.com/a/65707309.\n     */\n    function toUtf8BytesUint(uint256 x) internal pure returns (bytes memory) {\n        if (x == 0) {\n            return \"0\";\n        }\n        uint256 j = x;\n        uint256 len;\n        while (j != 0) {\n            len++;\n            j /= 10;\n        }\n        bytes memory bstr = new bytes(len);\n        uint256 k = len;\n        while (x != 0) {\n            k = k - 1;\n            uint8 temp = (48 + uint8(x - (x / 10) * 10));\n            bytes1 b1 = bytes1(temp);\n            bstr[k] = b1;\n            x /= 10;\n        }\n        return bstr;\n    }\n\n    function appendKeyValueBytes32(\n        bytes memory currentAncillaryData,\n        bytes memory key,\n        bytes32 value\n    ) internal pure returns (bytes memory) {\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8Bytes(value));\n    }\n\n    /**\n     * @notice Adds \"key:value\" to `currentAncillaryData` where `value` is an address that first needs to be converted\n     * to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n     * `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n     * @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n     * @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n     * @param value An address to set as the value in the key:value pair to append to `currentAncillaryData`.\n     * @return Newly appended ancillary data.\n     */\n    function appendKeyValueAddress(\n        bytes memory currentAncillaryData,\n        bytes memory key,\n        address value\n    ) internal pure returns (bytes memory) {\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8BytesAddress(value));\n    }\n\n    /**\n     * @notice Adds \"key:value\" to `currentAncillaryData` where `value` is a uint that first needs to be converted\n     * to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n     * `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n     * @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n     * @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n     * @param value A uint to set as the value in the key:value pair to append to `currentAncillaryData`.\n     * @return Newly appended ancillary data.\n     */\n    function appendKeyValueUint(\n        bytes memory currentAncillaryData,\n        bytes memory key,\n        uint256 value\n    ) internal pure returns (bytes memory) {\n        bytes memory prefix = constructPrefix(currentAncillaryData, key);\n        return abi.encodePacked(currentAncillaryData, prefix, toUtf8BytesUint(value));\n    }\n\n    /**\n     * @notice Helper method that returns the left hand side of a \"key:value\" pair plus the colon \":\" and a leading\n     * comma \",\" if the `currentAncillaryData` is not empty. The return value is intended to be prepended as a prefix to\n     * some utf8 value that is ultimately added to a comma-delimited, key-value dictionary.\n     */\n    function constructPrefix(bytes memory currentAncillaryData, bytes memory key) internal pure returns (bytes memory) {\n        if (currentAncillaryData.length > 0) {\n            return abi.encodePacked(\",\", key, \":\");\n        } else {\n            return abi.encodePacked(key, \":\");\n        }\n    }\n}\n"
            },
            "contracts/common/implementation/Testable.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"./Timer.sol\";\n\n/**\n * @title Base class that provides time overrides, but only if being run in test mode.\n */\nabstract contract Testable {\n    // If the contract is being run in production, then `timerAddress` will be the 0x0 address.\n    // Note: this variable should be set on construction and never modified.\n    address public timerAddress;\n\n    /**\n     * @notice Constructs the Testable contract. Called by child contracts.\n     * @param _timerAddress Contract that stores the current time in a testing environment.\n     * Must be set to 0x0 for production environments that use live time.\n     */\n    constructor(address _timerAddress) {\n        timerAddress = _timerAddress;\n    }\n\n    /**\n     * @notice Reverts if not running in test mode.\n     */\n    modifier onlyIfTest {\n        require(timerAddress != address(0x0));\n        _;\n    }\n\n    /**\n     * @notice Sets the current time.\n     * @dev Will revert if not running in test mode.\n     * @param time timestamp to set current Testable time to.\n     */\n    function setCurrentTime(uint256 time) external onlyIfTest {\n        Timer(timerAddress).setCurrentTime(time);\n    }\n\n    /**\n     * @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\n     * Otherwise, it will return the block timestamp.\n     * @return uint for the current Testable timestamp.\n     */\n    function getCurrentTime() public view virtual returns (uint256) {\n        if (timerAddress != address(0x0)) {\n            return Timer(timerAddress).getCurrentTime();\n        } else {\n            return block.timestamp; // solhint-disable-line not-rely-on-time\n        }\n    }\n}\n"
            },
            "contracts/common/implementation/FixedPoint.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/utils/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\";\n\n/**\n * @title Library for fixed point arithmetic on uints\n */\nlibrary FixedPoint {\n    using SafeMath for uint256;\n    using SignedSafeMath for int256;\n\n    // Supports 18 decimals. E.g., 1e18 represents \"1\", 5e17 represents \"0.5\".\n    // For unsigned values:\n    //   This can represent a value up to (2^256 - 1)/10^18 = ~10^59. 10^59 will be stored internally as uint256 10^77.\n    uint256 private constant FP_SCALING_FACTOR = 10**18;\n\n    // --------------------------------------- UNSIGNED -----------------------------------------------------------------------------\n    struct Unsigned {\n        uint256 rawValue;\n    }\n\n    /**\n     * @notice Constructs an `Unsigned` from an unscaled uint, e.g., `b=5` gets stored internally as `5*(10**18)`.\n     * @param a uint to convert into a FixedPoint.\n     * @return the converted FixedPoint.\n     */\n    function fromUnscaledUint(uint256 a) internal pure returns (Unsigned memory) {\n        return Unsigned(a.mul(FP_SCALING_FACTOR));\n    }\n\n    /**\n     * @notice Whether `a` is equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if equal, or False.\n     */\n    function isEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue == fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if equal, or False.\n     */\n    function isEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue == b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue > b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue > fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(uint256 a, Unsigned memory b) internal pure returns (bool) {\n        return fromUnscaledUint(a).rawValue > b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue >= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue >= fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(uint256 a, Unsigned memory b) internal pure returns (bool) {\n        return fromUnscaledUint(a).rawValue >= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue < b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue < fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(uint256 a, Unsigned memory b) internal pure returns (bool) {\n        return fromUnscaledUint(a).rawValue < b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(Unsigned memory a, Unsigned memory b) internal pure returns (bool) {\n        return a.rawValue <= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(Unsigned memory a, uint256 b) internal pure returns (bool) {\n        return a.rawValue <= fromUnscaledUint(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(uint256 a, Unsigned memory b) internal pure returns (bool) {\n        return fromUnscaledUint(a).rawValue <= b.rawValue;\n    }\n\n    /**\n     * @notice The minimum of `a` and `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the minimum of `a` and `b`.\n     */\n    function min(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return a.rawValue < b.rawValue ? a : b;\n    }\n\n    /**\n     * @notice The maximum of `a` and `b`.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the maximum of `a` and `b`.\n     */\n    function max(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return a.rawValue > b.rawValue ? a : b;\n    }\n\n    /**\n     * @notice Adds two `Unsigned`s, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the sum of `a` and `b`.\n     */\n    function add(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return Unsigned(a.rawValue.add(b.rawValue));\n    }\n\n    /**\n     * @notice Adds an `Unsigned` to an unscaled uint, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return the sum of `a` and `b`.\n     */\n    function add(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        return add(a, fromUnscaledUint(b));\n    }\n\n    /**\n     * @notice Subtracts two `Unsigned`s, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return Unsigned(a.rawValue.sub(b.rawValue));\n    }\n\n    /**\n     * @notice Subtracts an unscaled uint256 from an `Unsigned`, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        return sub(a, fromUnscaledUint(b));\n    }\n\n    /**\n     * @notice Subtracts an `Unsigned` from an unscaled uint256, reverting on overflow.\n     * @param a a uint256.\n     * @param b a FixedPoint.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(uint256 a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return sub(fromUnscaledUint(a), b);\n    }\n\n    /**\n     * @notice Multiplies two `Unsigned`s, reverting on overflow.\n     * @dev This will \"floor\" the product.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the product of `a` and `b`.\n     */\n    function mul(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        // There are two caveats with this computation:\n        // 1. Max output for the represented number is ~10^41, otherwise an intermediate value overflows. 10^41 is\n        // stored internally as a uint256 ~10^59.\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 1.4 * 2e-18 = 2.8e-18, which\n        // would round to 3, but this computation produces the result 2.\n        // No need to use SafeMath because FP_SCALING_FACTOR != 0.\n        return Unsigned(a.rawValue.mul(b.rawValue) / FP_SCALING_FACTOR);\n    }\n\n    /**\n     * @notice Multiplies an `Unsigned` and an unscaled uint256, reverting on overflow.\n     * @dev This will \"floor\" the product.\n     * @param a a FixedPoint.\n     * @param b a uint256.\n     * @return the product of `a` and `b`.\n     */\n    function mul(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        return Unsigned(a.rawValue.mul(b));\n    }\n\n    /**\n     * @notice Multiplies two `Unsigned`s and \"ceil's\" the product, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the product of `a` and `b`.\n     */\n    function mulCeil(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        uint256 mulRaw = a.rawValue.mul(b.rawValue);\n        uint256 mulFloor = mulRaw / FP_SCALING_FACTOR;\n        uint256 mod = mulRaw.mod(FP_SCALING_FACTOR);\n        if (mod != 0) {\n            return Unsigned(mulFloor.add(1));\n        } else {\n            return Unsigned(mulFloor);\n        }\n    }\n\n    /**\n     * @notice Multiplies an `Unsigned` and an unscaled uint256 and \"ceil's\" the product, reverting on overflow.\n     * @param a a FixedPoint.\n     * @param b a FixedPoint.\n     * @return the product of `a` and `b`.\n     */\n    function mulCeil(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        // Since b is an uint, there is no risk of truncation and we can just mul it normally\n        return Unsigned(a.rawValue.mul(b));\n    }\n\n    /**\n     * @notice Divides one `Unsigned` by an `Unsigned`, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a FixedPoint numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        // There are two caveats with this computation:\n        // 1. Max value for the number dividend `a` represents is ~10^41, otherwise an intermediate value overflows.\n        // 10^41 is stored internally as a uint256 10^59.\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 2 / 3 = 0.6 repeating, which\n        // would round to 0.666666666666666667, but this computation produces the result 0.666666666666666666.\n        return Unsigned(a.rawValue.mul(FP_SCALING_FACTOR).div(b.rawValue));\n    }\n\n    /**\n     * @notice Divides one `Unsigned` by an unscaled uint256, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a FixedPoint numerator.\n     * @param b a uint256 denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        return Unsigned(a.rawValue.div(b));\n    }\n\n    /**\n     * @notice Divides one unscaled uint256 by an `Unsigned`, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a uint256 numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(uint256 a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        return div(fromUnscaledUint(a), b);\n    }\n\n    /**\n     * @notice Divides one `Unsigned` by an `Unsigned` and \"ceil's\" the quotient, reverting on overflow or division by 0.\n     * @param a a FixedPoint numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function divCeil(Unsigned memory a, Unsigned memory b) internal pure returns (Unsigned memory) {\n        uint256 aScaled = a.rawValue.mul(FP_SCALING_FACTOR);\n        uint256 divFloor = aScaled.div(b.rawValue);\n        uint256 mod = aScaled.mod(b.rawValue);\n        if (mod != 0) {\n            return Unsigned(divFloor.add(1));\n        } else {\n            return Unsigned(divFloor);\n        }\n    }\n\n    /**\n     * @notice Divides one `Unsigned` by an unscaled uint256 and \"ceil's\" the quotient, reverting on overflow or division by 0.\n     * @param a a FixedPoint numerator.\n     * @param b a uint256 denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function divCeil(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory) {\n        // Because it is possible that a quotient gets truncated, we can't just call \"Unsigned(a.rawValue.div(b))\"\n        // similarly to mulCeil with a uint256 as the second parameter. Therefore we need to convert b into an Unsigned.\n        // This creates the possibility of overflow if b is very large.\n        return divCeil(a, fromUnscaledUint(b));\n    }\n\n    /**\n     * @notice Raises an `Unsigned` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\n     * @dev This will \"floor\" the result.\n     * @param a a FixedPoint numerator.\n     * @param b a uint256 denominator.\n     * @return output is `a` to the power of `b`.\n     */\n    function pow(Unsigned memory a, uint256 b) internal pure returns (Unsigned memory output) {\n        output = fromUnscaledUint(1);\n        for (uint256 i = 0; i < b; i = i.add(1)) {\n            output = mul(output, a);\n        }\n    }\n\n    // ------------------------------------------------- SIGNED -------------------------------------------------------------\n    // Supports 18 decimals. E.g., 1e18 represents \"1\", 5e17 represents \"0.5\".\n    // For signed values:\n    //   This can represent a value up (or down) to +-(2^255 - 1)/10^18 = ~10^58. 10^58 will be stored internally as int256 10^76.\n    int256 private constant SFP_SCALING_FACTOR = 10**18;\n\n    struct Signed {\n        int256 rawValue;\n    }\n\n    function fromSigned(Signed memory a) internal pure returns (Unsigned memory) {\n        require(a.rawValue >= 0, \"Negative value provided\");\n        return Unsigned(uint256(a.rawValue));\n    }\n\n    function fromUnsigned(Unsigned memory a) internal pure returns (Signed memory) {\n        require(a.rawValue <= uint256(type(int256).max), \"Unsigned too large\");\n        return Signed(int256(a.rawValue));\n    }\n\n    /**\n     * @notice Constructs a `Signed` from an unscaled int, e.g., `b=5` gets stored internally as `5*(10**18)`.\n     * @param a int to convert into a FixedPoint.Signed.\n     * @return the converted FixedPoint.Signed.\n     */\n    function fromUnscaledInt(int256 a) internal pure returns (Signed memory) {\n        return Signed(a.mul(SFP_SCALING_FACTOR));\n    }\n\n    /**\n     * @notice Whether `a` is equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a int256.\n     * @return True if equal, or False.\n     */\n    function isEqual(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue == fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if equal, or False.\n     */\n    function isEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue == b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue > b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue > fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than `b`.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a > b`, or False.\n     */\n    function isGreaterThan(int256 a, Signed memory b) internal pure returns (bool) {\n        return fromUnscaledInt(a).rawValue > b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue >= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue >= fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is greater than or equal to `b`.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a >= b`, or False.\n     */\n    function isGreaterThanOrEqual(int256 a, Signed memory b) internal pure returns (bool) {\n        return fromUnscaledInt(a).rawValue >= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue < b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue < fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than `b`.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a < b`, or False.\n     */\n    function isLessThan(int256 a, Signed memory b) internal pure returns (bool) {\n        return fromUnscaledInt(a).rawValue < b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(Signed memory a, Signed memory b) internal pure returns (bool) {\n        return a.rawValue <= b.rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(Signed memory a, int256 b) internal pure returns (bool) {\n        return a.rawValue <= fromUnscaledInt(b).rawValue;\n    }\n\n    /**\n     * @notice Whether `a` is less than or equal to `b`.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return True if `a <= b`, or False.\n     */\n    function isLessThanOrEqual(int256 a, Signed memory b) internal pure returns (bool) {\n        return fromUnscaledInt(a).rawValue <= b.rawValue;\n    }\n\n    /**\n     * @notice The minimum of `a` and `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the minimum of `a` and `b`.\n     */\n    function min(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        return a.rawValue < b.rawValue ? a : b;\n    }\n\n    /**\n     * @notice The maximum of `a` and `b`.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the maximum of `a` and `b`.\n     */\n    function max(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        return a.rawValue > b.rawValue ? a : b;\n    }\n\n    /**\n     * @notice Adds two `Signed`s, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the sum of `a` and `b`.\n     */\n    function add(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        return Signed(a.rawValue.add(b.rawValue));\n    }\n\n    /**\n     * @notice Adds an `Signed` to an unscaled int, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return the sum of `a` and `b`.\n     */\n    function add(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        return add(a, fromUnscaledInt(b));\n    }\n\n    /**\n     * @notice Subtracts two `Signed`s, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        return Signed(a.rawValue.sub(b.rawValue));\n    }\n\n    /**\n     * @notice Subtracts an unscaled int256 from an `Signed`, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        return sub(a, fromUnscaledInt(b));\n    }\n\n    /**\n     * @notice Subtracts an `Signed` from an unscaled int256, reverting on overflow.\n     * @param a an int256.\n     * @param b a FixedPoint.Signed.\n     * @return the difference of `a` and `b`.\n     */\n    function sub(int256 a, Signed memory b) internal pure returns (Signed memory) {\n        return sub(fromUnscaledInt(a), b);\n    }\n\n    /**\n     * @notice Multiplies two `Signed`s, reverting on overflow.\n     * @dev This will \"floor\" the product.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the product of `a` and `b`.\n     */\n    function mul(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        // There are two caveats with this computation:\n        // 1. Max output for the represented number is ~10^41, otherwise an intermediate value overflows. 10^41 is\n        // stored internally as an int256 ~10^59.\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 1.4 * 2e-18 = 2.8e-18, which\n        // would round to 3, but this computation produces the result 2.\n        // No need to use SafeMath because SFP_SCALING_FACTOR != 0.\n        return Signed(a.rawValue.mul(b.rawValue) / SFP_SCALING_FACTOR);\n    }\n\n    /**\n     * @notice Multiplies an `Signed` and an unscaled int256, reverting on overflow.\n     * @dev This will \"floor\" the product.\n     * @param a a FixedPoint.Signed.\n     * @param b an int256.\n     * @return the product of `a` and `b`.\n     */\n    function mul(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        return Signed(a.rawValue.mul(b));\n    }\n\n    /**\n     * @notice Multiplies two `Signed`s and \"ceil's\" the product, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the product of `a` and `b`.\n     */\n    function mulAwayFromZero(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        int256 mulRaw = a.rawValue.mul(b.rawValue);\n        int256 mulTowardsZero = mulRaw / SFP_SCALING_FACTOR;\n        // Manual mod because SignedSafeMath doesn't support it.\n        int256 mod = mulRaw % SFP_SCALING_FACTOR;\n        if (mod != 0) {\n            bool isResultPositive = isLessThan(a, 0) == isLessThan(b, 0);\n            int256 valueToAdd = isResultPositive ? int256(1) : int256(-1);\n            return Signed(mulTowardsZero.add(valueToAdd));\n        } else {\n            return Signed(mulTowardsZero);\n        }\n    }\n\n    /**\n     * @notice Multiplies an `Signed` and an unscaled int256 and \"ceil's\" the product, reverting on overflow.\n     * @param a a FixedPoint.Signed.\n     * @param b a FixedPoint.Signed.\n     * @return the product of `a` and `b`.\n     */\n    function mulAwayFromZero(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        // Since b is an int, there is no risk of truncation and we can just mul it normally\n        return Signed(a.rawValue.mul(b));\n    }\n\n    /**\n     * @notice Divides one `Signed` by an `Signed`, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a FixedPoint numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        // There are two caveats with this computation:\n        // 1. Max value for the number dividend `a` represents is ~10^41, otherwise an intermediate value overflows.\n        // 10^41 is stored internally as an int256 10^59.\n        // 2. Results that can't be represented exactly are truncated not rounded. E.g., 2 / 3 = 0.6 repeating, which\n        // would round to 0.666666666666666667, but this computation produces the result 0.666666666666666666.\n        return Signed(a.rawValue.mul(SFP_SCALING_FACTOR).div(b.rawValue));\n    }\n\n    /**\n     * @notice Divides one `Signed` by an unscaled int256, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a a FixedPoint numerator.\n     * @param b an int256 denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        return Signed(a.rawValue.div(b));\n    }\n\n    /**\n     * @notice Divides one unscaled int256 by an `Signed`, reverting on overflow or division by 0.\n     * @dev This will \"floor\" the quotient.\n     * @param a an int256 numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function div(int256 a, Signed memory b) internal pure returns (Signed memory) {\n        return div(fromUnscaledInt(a), b);\n    }\n\n    /**\n     * @notice Divides one `Signed` by an `Signed` and \"ceil's\" the quotient, reverting on overflow or division by 0.\n     * @param a a FixedPoint numerator.\n     * @param b a FixedPoint denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function divAwayFromZero(Signed memory a, Signed memory b) internal pure returns (Signed memory) {\n        int256 aScaled = a.rawValue.mul(SFP_SCALING_FACTOR);\n        int256 divTowardsZero = aScaled.div(b.rawValue);\n        // Manual mod because SignedSafeMath doesn't support it.\n        int256 mod = aScaled % b.rawValue;\n        if (mod != 0) {\n            bool isResultPositive = isLessThan(a, 0) == isLessThan(b, 0);\n            int256 valueToAdd = isResultPositive ? int256(1) : int256(-1);\n            return Signed(divTowardsZero.add(valueToAdd));\n        } else {\n            return Signed(divTowardsZero);\n        }\n    }\n\n    /**\n     * @notice Divides one `Signed` by an unscaled int256 and \"ceil's\" the quotient, reverting on overflow or division by 0.\n     * @param a a FixedPoint numerator.\n     * @param b an int256 denominator.\n     * @return the quotient of `a` divided by `b`.\n     */\n    function divAwayFromZero(Signed memory a, int256 b) internal pure returns (Signed memory) {\n        // Because it is possible that a quotient gets truncated, we can't just call \"Signed(a.rawValue.div(b))\"\n        // similarly to mulCeil with an int256 as the second parameter. Therefore we need to convert b into an Signed.\n        // This creates the possibility of overflow if b is very large.\n        return divAwayFromZero(a, fromUnscaledInt(b));\n    }\n\n    /**\n     * @notice Raises an `Signed` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\n     * @dev This will \"floor\" the result.\n     * @param a a FixedPoint.Signed.\n     * @param b a uint256 (negative exponents are not allowed).\n     * @return output is `a` to the power of `b`.\n     */\n    function pow(Signed memory a, uint256 b) internal pure returns (Signed memory output) {\n        output = fromUnscaledInt(1);\n        for (uint256 i = 0; i < b; i = i.add(1)) {\n            output = mul(output, a);\n        }\n    }\n}\n"
            },
            "contracts/common/implementation/Lockable.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n * is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n * and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\n */\ncontract Lockable {\n    bool private _notEntered;\n\n    constructor() {\n        // Storing an initial non-zero value makes deployment a bit more expensive, but in exchange the refund on every\n        // call to nonReentrant will be lower in amount. Since refunds are capped to a percentage of the total\n        // transaction's gas, it is best to keep them low in cases like this one, to increase the likelihood of the full\n        // refund coming into effect.\n        _notEntered = true;\n    }\n\n    /**\n     * @dev Prevents a contract from calling itself, directly or indirectly.\n     * Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n     * prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n     * function that does the actual state modification.\n     */\n    modifier nonReentrant() {\n        _preEntranceCheck();\n        _preEntranceSet();\n        _;\n        _postEntranceReset();\n    }\n\n    /**\n     * @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method.\n     */\n    modifier nonReentrantView() {\n        _preEntranceCheck();\n        _;\n    }\n\n    // Internal methods are used to avoid copying the require statement's bytecode to every `nonReentrant()` method.\n    // On entry into a function, `_preEntranceCheck()` should always be called to check if the function is being\n    // re-entered. Then, if the function modifies state, it should call `_postEntranceSet()`, perform its logic, and\n    // then call `_postEntranceReset()`.\n    // View-only methods can simply call `_preEntranceCheck()` to make sure that it is not being re-entered.\n    function _preEntranceCheck() internal view {\n        // On the first call to nonReentrant, _notEntered will be true\n        require(_notEntered, \"ReentrancyGuard: reentrant call\");\n    }\n\n    function _preEntranceSet() internal {\n        // Any calls to nonReentrant after this point will fail\n        _notEntered = false;\n    }\n\n    function _postEntranceReset() internal {\n        // By storing the original value once again, a refund is triggered (see\n        // https://eips.ethereum.org/EIPS/eip-2200)\n        _notEntered = true;\n    }\n}\n"
            },
            "contracts/common/implementation/MultiCaller.sol": {
                "content": "// This contract is taken from Uniswaps's multi call implementation (https://github.com/Uniswap/uniswap-v3-periphery/blob/main/contracts/base/Multicall.sol)\n// and was modified to be solidity 0.8 compatible. Additionally, the method was restricted to only work with msg.value\n// set to 0 to avoid any nasty attack vectors on function calls that use value sent with deposits.\npragma solidity ^0.8.0;\n\n/// @title MultiCaller\n/// @notice Enables calling multiple methods in a single call to the contract\ncontract MultiCaller {\n    function multicall(bytes[] calldata data) external payable returns (bytes[] memory results) {\n        require(msg.value == 0, \"Only multicall with 0 value\");\n        results = new bytes[](data.length);\n        for (uint256 i = 0; i < data.length; i++) {\n            (bool success, bytes memory result) = address(this).delegatecall(data[i]);\n\n            if (!success) {\n                // Next 5 lines from https://ethereum.stackexchange.com/a/83577\n                if (result.length < 68) revert();\n                assembly {\n                    result := add(result, 0x04)\n                }\n                revert(abi.decode(result, (string)));\n            }\n\n            results[i] = result;\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
            },
            "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"./IERC20.sol\";\nimport \"./extensions/IERC20Metadata.sol\";\nimport \"../../utils/Context.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n * For a generic mechanism see {ERC20PresetMinterPauser}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * We have followed general OpenZeppelin guidelines: functions revert instead\n * of returning `false` on failure. This behavior is nonetheless conventional\n * and does not conflict with the expectations of ERC20 applications.\n *\n * Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n * This allows applications to reconstruct the allowance for all accounts just\n * by listening to said events. Other implementations of the EIP may not emit\n * these events, as it isn't required by the specification.\n *\n * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n * functions have been added to mitigate the well-known issues around setting\n * allowances. See {IERC20-approve}.\n */\ncontract ERC20 is Context, IERC20, IERC20Metadata {\n    mapping (address => uint256) private _balances;\n\n    mapping (address => mapping (address => uint256)) private _allowances;\n\n    uint256 private _totalSupply;\n\n    string private _name;\n    string private _symbol;\n\n    /**\n     * @dev Sets the values for {name} and {symbol}.\n     *\n     * The defaut value of {decimals} is 18. To select a different value for\n     * {decimals} you should overload it.\n     *\n     * All two of these values are immutable: they can only be set once during\n     * construction.\n     */\n    constructor (string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev Returns the symbol of the token, usually a shorter version of the\n     * name.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev Returns the number of decimals used to get its user representation.\n     * For example, if `decimals` equals `2`, a balance of `505` tokens should\n     * be displayed to a user as `5,05` (`505 / 10 ** 2`).\n     *\n     * Tokens usually opt for a value of 18, imitating the relationship between\n     * Ether and Wei. This is the value {ERC20} uses, unless this function is\n     * overridden;\n     *\n     * NOTE: This information is only used for _display_ purposes: it in\n     * no way affects any of the arithmetic of the contract, including\n     * {IERC20-balanceOf} and {IERC20-transfer}.\n     */\n    function decimals() public view virtual override returns (uint8) {\n        return 18;\n    }\n\n    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\n    function balanceOf(address account) public view virtual override returns (uint256) {\n        return _balances[account];\n    }\n\n    /**\n     * @dev See {IERC20-transfer}.\n     *\n     * Requirements:\n     *\n     * - `recipient` cannot be the zero address.\n     * - the caller must have a balance of at least `amount`.\n     */\n    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {\n        _transfer(_msgSender(), recipient, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-allowance}.\n     */\n    function allowance(address owner, address spender) public view virtual override returns (uint256) {\n        return _allowances[owner][spender];\n    }\n\n    /**\n     * @dev See {IERC20-approve}.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function approve(address spender, uint256 amount) public virtual override returns (bool) {\n        _approve(_msgSender(), spender, amount);\n        return true;\n    }\n\n    /**\n     * @dev See {IERC20-transferFrom}.\n     *\n     * Emits an {Approval} event indicating the updated allowance. This is not\n     * required by the EIP. See the note at the beginning of {ERC20}.\n     *\n     * Requirements:\n     *\n     * - `sender` and `recipient` cannot be the zero address.\n     * - `sender` must have a balance of at least `amount`.\n     * - the caller must have allowance for ``sender``'s tokens of at least\n     * `amount`.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {\n        _transfer(sender, recipient, amount);\n\n        uint256 currentAllowance = _allowances[sender][_msgSender()];\n        require(currentAllowance >= amount, \"ERC20: transfer amount exceeds allowance\");\n        _approve(sender, _msgSender(), currentAllowance - amount);\n\n        return true;\n    }\n\n    /**\n     * @dev Atomically increases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     */\n    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {\n        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);\n        return true;\n    }\n\n    /**\n     * @dev Atomically decreases the allowance granted to `spender` by the caller.\n     *\n     * This is an alternative to {approve} that can be used as a mitigation for\n     * problems described in {IERC20-approve}.\n     *\n     * Emits an {Approval} event indicating the updated allowance.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `spender` must have allowance for the caller of at least\n     * `subtractedValue`.\n     */\n    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {\n        uint256 currentAllowance = _allowances[_msgSender()][spender];\n        require(currentAllowance >= subtractedValue, \"ERC20: decreased allowance below zero\");\n        _approve(_msgSender(), spender, currentAllowance - subtractedValue);\n\n        return true;\n    }\n\n    /**\n     * @dev Moves tokens `amount` from `sender` to `recipient`.\n     *\n     * This is internal function is equivalent to {transfer}, and can be used to\n     * e.g. implement automatic token fees, slashing mechanisms, etc.\n     *\n     * Emits a {Transfer} event.\n     *\n     * Requirements:\n     *\n     * - `sender` cannot be the zero address.\n     * - `recipient` cannot be the zero address.\n     * - `sender` must have a balance of at least `amount`.\n     */\n    function _transfer(address sender, address recipient, uint256 amount) internal virtual {\n        require(sender != address(0), \"ERC20: transfer from the zero address\");\n        require(recipient != address(0), \"ERC20: transfer to the zero address\");\n\n        _beforeTokenTransfer(sender, recipient, amount);\n\n        uint256 senderBalance = _balances[sender];\n        require(senderBalance >= amount, \"ERC20: transfer amount exceeds balance\");\n        _balances[sender] = senderBalance - amount;\n        _balances[recipient] += amount;\n\n        emit Transfer(sender, recipient, amount);\n    }\n\n    /** @dev Creates `amount` tokens and assigns them to `account`, increasing\n     * the total supply.\n     *\n     * Emits a {Transfer} event with `from` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     */\n    function _mint(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: mint to the 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    /**\n     * @dev Destroys `amount` tokens from `account`, reducing the\n     * total supply.\n     *\n     * Emits a {Transfer} event with `to` set to the zero address.\n     *\n     * Requirements:\n     *\n     * - `account` cannot be the zero address.\n     * - `account` must have at least `amount` tokens.\n     */\n    function _burn(address account, uint256 amount) internal virtual {\n        require(account != address(0), \"ERC20: burn from the zero address\");\n\n        _beforeTokenTransfer(account, address(0), amount);\n\n        uint256 accountBalance = _balances[account];\n        require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n        _balances[account] = accountBalance - amount;\n        _totalSupply -= amount;\n\n        emit Transfer(account, address(0), amount);\n    }\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n     *\n     * This internal function is equivalent to `approve`, and can be used to\n     * e.g. set automatic allowances for certain subsystems, etc.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `owner` cannot be the zero address.\n     * - `spender` cannot be the zero address.\n     */\n    function _approve(address owner, address spender, uint256 amount) internal virtual {\n        require(owner != address(0), \"ERC20: approve from the zero address\");\n        require(spender != address(0), \"ERC20: approve to the zero address\");\n\n        _allowances[owner][spender] = amount;\n        emit Approval(owner, spender, amount);\n    }\n\n    /**\n     * @dev Hook that is called before any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n     * will be to transferred to `to`.\n     * - when `from` is zero, `amount` tokens will be minted for `to`.\n     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }\n}\n"
            },
            "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\nimport \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n    using Address for address;\n\n    function safeTransfer(IERC20 token, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));\n    }\n\n    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));\n    }\n\n    /**\n     * @dev Deprecated. This function has issues similar to the ones found in\n     * {IERC20-approve}, and its usage is discouraged.\n     *\n     * Whenever possible, use {safeIncreaseAllowance} and\n     * {safeDecreaseAllowance} instead.\n     */\n    function safeApprove(IERC20 token, address spender, uint256 value) internal {\n        // safeApprove should only be called when setting an initial allowance,\n        // or when resetting it to zero. To increase and decrease it, use\n        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'\n        // solhint-disable-next-line max-line-length\n        require((value == 0) || (token.allowance(address(this), spender) == 0),\n            \"SafeERC20: approve from non-zero to non-zero allowance\"\n        );\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));\n    }\n\n    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        uint256 newAllowance = token.allowance(address(this), spender) + value;\n        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n    }\n\n    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n        unchecked {\n            uint256 oldAllowance = token.allowance(address(this), spender);\n            require(oldAllowance >= value, \"SafeERC20: decreased allowance below zero\");\n            uint256 newAllowance = oldAllowance - value;\n            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));\n        }\n    }\n\n    /**\n     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n     * on the return value: the return value is optional (but if data is returned, it must not be false).\n     * @param token The token targeted by the call.\n     * @param data The call data (encoded using abi.encode or one of its variants).\n     */\n    function _callOptionalReturn(IERC20 token, bytes memory data) private {\n        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since\n        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that\n        // the target address contains contract code and also asserts for success in the low-level call.\n\n        bytes memory returndata = address(token).functionCall(data, \"SafeERC20: low-level call failed\");\n        if (returndata.length > 0) { // Return data is optional\n            // solhint-disable-next-line max-line-length\n            require(abi.decode(returndata, (bool)), \"SafeERC20: ERC20 operation did not succeed\");\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/utils/Address.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize, which returns 0 for contracts in\n        // construction, since the code is only stored at the end of the\n        // constructor execution.\n\n        uint256 size;\n        // solhint-disable-next-line no-inline-assembly\n        assembly { size := extcodesize(account) }\n        return size > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n        (bool success, ) = recipient.call{ value: amount }(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain`call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n      return functionCall(target, data, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        require(isContract(target), \"Address: call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.call{ value: value }(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\n        require(isContract(target), \"Address: static call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n        require(isContract(target), \"Address: delegate call to non-contract\");\n\n        // solhint-disable-next-line avoid-low-level-calls\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return _verifyCallResult(success, returndata, errorMessage);\n    }\n\n    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            // Look for revert reason and bubble it up if present\n            if (returndata.length > 0) {\n                // The easiest way to bubble the revert reason is using memory via assembly\n\n                // solhint-disable-next-line no-inline-assembly\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"
            },
            "contracts/oracle/interfaces/OptimisticOracleInterface.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\n/**\n * @title Financial contract facing Oracle interface.\n * @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\n */\nabstract contract OptimisticOracleInterface {\n    // Struct representing the state of a price request.\n    enum State {\n        Invalid, // Never requested.\n        Requested, // Requested, no other actions taken.\n        Proposed, // Proposed, but not expired or disputed yet.\n        Expired, // Proposed, not disputed, past liveness.\n        Disputed, // Disputed, but no DVM price returned yet.\n        Resolved, // Disputed and DVM price is available.\n        Settled // Final price has been set in the contract (can get here from Expired or Resolved).\n    }\n\n    // Struct representing a price request.\n    struct Request {\n        address proposer; // Address of the proposer.\n        address disputer; // Address of the disputer.\n        IERC20 currency; // ERC20 token used to pay rewards and fees.\n        bool settled; // True if the request is settled.\n        bool refundOnDispute; // True if the requester should be refunded their reward on dispute.\n        int256 proposedPrice; // Price that the proposer submitted.\n        int256 resolvedPrice; // Price resolved once the request is settled.\n        uint256 expirationTime; // Time at which the request auto-settles without a dispute.\n        uint256 reward; // Amount of the currency to pay to the proposer on settlement.\n        uint256 finalFee; // Final fee to pay to the Store upon request to the DVM.\n        uint256 bond; // Bond that the proposer and disputer must pay on top of the final fee.\n        uint256 customLiveness; // Custom liveness value set by the requester.\n    }\n\n    // This value must be <= the Voting contract's `ancillaryBytesLimit` value otherwise it is possible\n    // that a price can be requested to this contract successfully, but cannot be disputed because the DVM refuses\n    // to accept a price request made with ancillary data length over a certain size.\n    uint256 public constant ancillaryBytesLimit = 8192;\n\n    /**\n     * @notice Requests a new price.\n     * @param identifier price identifier being requested.\n     * @param timestamp timestamp of the price being requested.\n     * @param ancillaryData ancillary data representing additional args being passed with the price request.\n     * @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n     * @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n     *               which could make sense if the contract requests and proposes the value in the same call or\n     *               provides its own reward system.\n     * @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n     * This can be changed with a subsequent call to setBond().\n     */\n    function requestPrice(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        IERC20 currency,\n        uint256 reward\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Set the proposal bond associated with a price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param bond custom bond amount to set.\n     * @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n     * changed again with a subsequent call to setBond().\n     */\n    function setBond(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        uint256 bond\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n     * in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n     * bond, so there is still profit to be made even if the reward is refunded.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     */\n    function setRefundOnDispute(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) external virtual;\n\n    /**\n     * @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n     * being auto-resolved.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param customLiveness new custom liveness.\n     */\n    function setCustomLiveness(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        uint256 customLiveness\n    ) external virtual;\n\n    /**\n     * @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n     * from this proposal. However, any bonds are pulled from the caller.\n     * @param proposer address to set as the proposer.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function proposePriceFor(\n        address proposer,\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        int256 proposedPrice\n    ) public virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Proposes a price value for an existing price request.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @param proposedPrice price being proposed.\n     * @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n     * the proposer once settled if the proposal is correct.\n     */\n    function proposePrice(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData,\n        int256 proposedPrice\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n     * receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n     * @param disputer address to set as the disputer.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n     * the disputer once settled if the dispute was value (the proposal was incorrect).\n     */\n    function disputePriceFor(\n        address disputer,\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) public virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Disputes a price value for an existing price request with an active proposal.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n     * the disputer once settled if the dispute was valid (the proposal was incorrect).\n     */\n    function disputePrice(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) external virtual returns (uint256 totalBond);\n\n    /**\n     * @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n     * or settleable. Note: this method is not view so that this call may actually settle the price request if it\n     * hasn't been settled.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return resolved price.\n     */\n    function settleAndGetPrice(\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) external virtual returns (int256);\n\n    /**\n     * @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n     * the returned bonds as well as additional rewards.\n     */\n    function settle(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) external virtual returns (uint256 payout);\n\n    /**\n     * @notice Gets the current data structure containing all information about a price request.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return the Request data structure.\n     */\n    function getRequest(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) public view virtual returns (Request memory);\n\n    /**\n     * @notice Returns the state of a price request.\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return the State enum value.\n     */\n    function getState(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) public view virtual returns (State);\n\n    /**\n     * @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\n     * @param requester sender of the initial price request.\n     * @param identifier price identifier to identify the existing request.\n     * @param timestamp timestamp to identify the existing request.\n     * @param ancillaryData ancillary data of the price being requested.\n     * @return true if price has resolved or settled, false otherwise.\n     */\n    function hasPrice(\n        address requester,\n        bytes32 identifier,\n        uint256 timestamp,\n        bytes memory ancillaryData\n    ) public view virtual returns (bool);\n\n    function stampAncillaryData(bytes memory ancillaryData, address requester)\n        public\n        view\n        virtual\n        returns (bytes memory);\n}\n"
            },
            "@openzeppelin/contracts/utils/math/SafeMath.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n// CAUTION\n// This version of SafeMath should only be used with Solidity 0.8 or later,\n// because it relies on the compiler's built in overflow checks.\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler\n * now has built in overflow checking.\n */\nlibrary SafeMath {\n    /**\n     * @dev Returns the addition of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            uint256 c = a + b;\n            if (c < a) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b > a) return (false, 0);\n            return (true, a - b);\n        }\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n            // benefit is lost if 'b' is also tested.\n            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n            if (a == 0) return (true, 0);\n            uint256 c = a * b;\n            if (c / a != b) return (false, 0);\n            return (true, c);\n        }\n    }\n\n    /**\n     * @dev Returns the division of two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a / b);\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n     *\n     * _Available since v3.4._\n     */\n    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n        unchecked {\n            if (b == 0) return (false, 0);\n            return (true, a % b);\n        }\n    }\n\n    /**\n     * @dev Returns the addition of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a + b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting on\n     * overflow (when the result is negative).\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the multiplication of two unsigned integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a * b;\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator.\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting when dividing by zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a % b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n     * overflow (when the result is negative).\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {trySub}.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        unchecked {\n            require(b <= a, errorMessage);\n            return a - b;\n        }\n    }\n\n    /**\n     * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Counterpart to Solidity's `/` operator. Note: this function uses a\n     * `revert` opcode (which leaves remaining gas untouched) while Solidity\n     * uses an invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        unchecked {\n            require(b > 0, errorMessage);\n            return a / b;\n        }\n    }\n\n    /**\n     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n     * reverting with custom message when dividing by zero.\n     *\n     * CAUTION: This function is deprecated because it requires allocating memory for the error\n     * message unnecessarily. For custom revert reasons use {tryMod}.\n     *\n     * Counterpart to Solidity's `%` operator. This function uses a `revert`\n     * opcode (which leaves remaining gas untouched) while Solidity uses an\n     * invalid opcode to revert (consuming all remaining gas).\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n        unchecked {\n            require(b > 0, errorMessage);\n            return a % b;\n        }\n    }\n}\n"
            },
            "@openzeppelin/contracts/utils/math/SignedSafeMath.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations.\n *\n * NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\n * now has built in overflow checking.\n */\nlibrary SignedSafeMath {\n    /**\n     * @dev Returns the multiplication of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `*` operator.\n     *\n     * Requirements:\n     *\n     * - Multiplication cannot overflow.\n     */\n    function mul(int256 a, int256 b) internal pure returns (int256) {\n        return a * b;\n    }\n\n    /**\n     * @dev Returns the integer division of two signed integers. Reverts on\n     * division by zero. The result is rounded towards zero.\n     *\n     * Counterpart to Solidity's `/` operator.\n     *\n     * Requirements:\n     *\n     * - The divisor cannot be zero.\n     */\n    function div(int256 a, int256 b) internal pure returns (int256) {\n        return a / b;\n    }\n\n    /**\n     * @dev Returns the subtraction of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `-` operator.\n     *\n     * Requirements:\n     *\n     * - Subtraction cannot overflow.\n     */\n    function sub(int256 a, int256 b) internal pure returns (int256) {\n        return a - b;\n    }\n\n    /**\n     * @dev Returns the addition of two signed integers, reverting on\n     * overflow.\n     *\n     * Counterpart to Solidity's `+` operator.\n     *\n     * Requirements:\n     *\n     * - Addition cannot overflow.\n     */\n    function add(int256 a, int256 b) internal pure returns (int256) {\n        return a + b;\n    }\n}\n"
            },
            "contracts/common/implementation/Timer.sol": {
                "content": "// SPDX-License-Identifier: AGPL-3.0-only\npragma solidity ^0.8.0;\n\n/**\n * @title Universal store of current contract time for testing environments.\n */\ncontract Timer {\n    uint256 private currentTime;\n\n    constructor() {\n        currentTime = block.timestamp; // solhint-disable-line not-rely-on-time\n    }\n\n    /**\n     * @notice Sets the current time.\n     * @dev Will revert if not running in test mode.\n     * @param time timestamp to set `currentTime` to.\n     */\n    function setCurrentTime(uint256 time) external {\n        currentTime = time;\n    }\n\n    /**\n     * @notice Gets the currentTime variable set in the Timer.\n     * @return uint256 for the current Testable timestamp.\n     */\n    function getCurrentTime() public view returns (uint256) {\n        return currentTime;\n    }\n}\n"
            },
            "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\nimport \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC20 standard.\n *\n * _Available since v4.1._\n */\ninterface IERC20Metadata is IERC20 {\n    /**\n     * @dev Returns the name of the token.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the symbol of the token.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the decimals places of the token.\n     */\n    function decimals() external view returns (uint8);\n}\n"
            },
            "@openzeppelin/contracts/utils/Context.sol": {
                "content": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n        return msg.data;\n    }\n}\n"
            }
        },
        "settings": {
            "optimizer": {
                "enabled": true,
                "runs": 200
            },
            "outputSelection": {
                "*": {
                    "*": [
                        "abi",
                        "evm.bytecode",
                        "evm.deployedBytecode",
                        "evm.methodIdentifiers",
                        "metadata"
                    ],
                    "": [
                        "ast"
                    ]
                }
            }
        }
    },
    "output": {
        "contracts": {
            "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
                "ERC20": {
                    "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"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_44": {
                                    "entryPoint": null,
                                    "id": 44,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_decode_string_fromMemory": {
                                    "entryPoint": 292,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory": {
                                    "entryPoint": 475,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 581,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 270,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:1985:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "46:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "63:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "70:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "75:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "66:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "66:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "56:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "56:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "56:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "103:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "106:4:22",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "96:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "96:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "96:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "127:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "130:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "120:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "120:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "120:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "14:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "210:821:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "259:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "268:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "271:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "261:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "261:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "261:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "238:6:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "246:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "234:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "234:17:22"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "253:3:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "230:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "230:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "223:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "223:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "220:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "284:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "300:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "294:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "294:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "288:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "316:28:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "334:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "338:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "330:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "330:10:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "342:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "326:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "326:18:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "320:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "367:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "369:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "369:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "369:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "359:2:22"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "363:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "356:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "356:10:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "353:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "398:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "412:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "408:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "408:7:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "402:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "424:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "444:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "438:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "438:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "428:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "456:71:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "478:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_1",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "502:2:22"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "506:4:22",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "498:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "498:13:22"
                                                                                            },
                                                                                            {
                                                                                                "name": "_3",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "513:2:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "494:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "494:22:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "518:2:22",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "490:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "490:31:22"
                                                                            },
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "523:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "486:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "486:40:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "474:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "474:53:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "460:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "586:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "588:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "588:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "588:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "545:10:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "557:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "542:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "542:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "565:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "577:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "562:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "562:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "539:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "539:46:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "536:72:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "624:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "628:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "617:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "617:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "617:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "655:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "663:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "648:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "648:18:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "648:18:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "675:14:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "685:4:22",
                                                                "type": "",
                                                                "value": "0x20"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "679:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "735:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "744:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "747:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "737:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "737:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "737:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "712:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "720:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "708:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "708:15:22"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "725:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "704:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "704:24:22"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "730:3:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "701:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "701:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "698:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "760:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "769:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "764:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "825:87:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "memPtr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "854:6:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "862:1:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "850:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "850:14:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "_4",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "866:2:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "846:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "846:23:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "offset",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "885:6:22"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "893:1:22"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "881:3:22"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "881:14:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_4",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "897:2:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "877:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "877:23:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "871:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "871:30:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "839:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "839:63:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "839:63:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "790:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "793:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "787:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "787:9:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "797:19:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "799:15:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "808:1:22"
                                                                                },
                                                                                {
                                                                                    "name": "_4",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "811:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "804:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "804:10:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "799:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "783:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "779:133:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "942:59:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "memPtr",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "971:6:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "979:2:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "967:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "967:15:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "_4",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "984:2:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "963:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "963:24:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "989:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "956:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "956:35:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "956:35:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "927:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "930:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "924:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "924:9:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "921:80:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1010:15:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1019:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "array",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1010:5:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_string_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "184:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "192:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "array",
                                                        "nodeType": "YulTypedName",
                                                        "src": "200:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "146:885:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1154:444:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1200:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1209:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1212:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1202:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1202:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1202:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1175:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1184:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1171:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1171:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1196:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1167:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1167:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1164:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1225:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1245:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1239:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1239:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1229:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1264:28:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1282:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1286:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1278:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1278:10:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1290:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1274:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1274:18:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1268:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1319:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1328:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1331:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1321:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1321:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1321:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1307:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1315:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1304:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1304:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1301:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1344:71:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1387:9:22"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1398:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1383:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1383:22:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1407:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_string_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1354:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1354:61:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1344:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1424:41:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1450:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1461:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1446:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1446:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1440:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1440:25:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1428:8:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1494:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1503:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1506:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1496:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1496:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1496:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1480:8:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1490:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1477:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1477:16:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1474:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1519:73:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1562:9:22"
                                                                            },
                                                                            {
                                                                                "name": "offset_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1573:8:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1558:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1558:24:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1584:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_string_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1529:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1529:63:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1519:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1112:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1123:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1135:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1143:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1036:562:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1658:325:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1668:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1682:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1685:4:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1678:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1678:12:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1668:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1699:38:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1729:4:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1735:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1725:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1725:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1703:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1776:31:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1778:27:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1792:6:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1800:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1788:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1788:17:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1778:6:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1756:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1749:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1749:26:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1746:61:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1866:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1887:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "1894:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "1899:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1890:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1890:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1880:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1880:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1880:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1931:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1934:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1924:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1924:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1924:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1959:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1962:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1952:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1952:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1952:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1822:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1845:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1853:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1842:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1842:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1819:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1819:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1816:161:22"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1638:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1647:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1603:380:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        if gt(i, _1)\n        {\n            mstore(add(add(memPtr, _1), _4), 0)\n        }\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "60806040523480156200001157600080fd5b5060405162000b8238038062000b828339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b6108f080620002926000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101c6565b6040516100c3919061070e565b60405180910390f35b6100df6100da36600461077f565b610258565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f3660046107a9565b61026e565b604051601281526020016100c3565b6100df61013136600461077f565b610324565b6100f36101443660046107e5565b6001600160a01b031660009081526020819052604090205490565b6100b661035b565b6100df61017536600461077f565b61036a565b6100df61018836600461077f565b610405565b6100f361019b366004610807565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101d59061083a565b80601f01602080910402602001604051908101604052809291908181526020018280546102019061083a565b801561024e5780601f106102235761010080835404028352916020019161024e565b820191906000526020600020905b81548152906001019060200180831161023157829003601f168201915b5050505050905090565b6000610265338484610412565b50600192915050565b600061027b848484610536565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103055760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103198533610314868561088b565b610412565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102659185906103149086906108a2565b6060600480546101d59061083a565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102fc565b6103fb3385610314868561088b565b5060019392505050565b6000610265338484610536565b6001600160a01b0383166104745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102fc565b6001600160a01b0382166104d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102fc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661059a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102fc565b6001600160a01b0382166105fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102fc565b6001600160a01b038316600090815260208190526040902054818110156106745760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102fc565b61067e828261088b565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906106b49084906108a2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161070091815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b8181111561074d576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461077a57600080fd5b919050565b6000806040838503121561079257600080fd5b61079b83610763565b946020939093013593505050565b6000806000606084860312156107be57600080fd5b6107c784610763565b92506107d560208501610763565b9150604084013590509250925092565b6000602082840312156107f757600080fd5b61080082610763565b9392505050565b6000806040838503121561081a57600080fd5b61082383610763565b915061083160208401610763565b90509250929050565b600181811c9082168061084e57607f821691505b6020821081141561086f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561089d5761089d610875565b500390565b600082198211156108b5576108b5610875565b50019056fea2646970667358221220bb9307a52d2bb32b53761a1511cf8b480b50bee2d6ca47ef3403e3ec72e7411a64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xB82 CODESIZE SUB DUP1 PUSH3 0xB82 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1DB JUMP JUMPDEST DUP2 MLOAD PUSH3 0x49 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x5F SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x68 JUMP JUMPDEST POP POP POP PUSH3 0x282 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x76 SWAP1 PUSH3 0x245 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x9A JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0xB5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0xE5 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0xE5 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0xE5 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0xC8 JUMP JUMPDEST POP PUSH3 0xF3 SWAP3 SWAP2 POP PUSH3 0xF7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0xF3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0xF8 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x153 JUMPI PUSH3 0x153 PUSH3 0x10E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x17E JUMPI PUSH3 0x17E PUSH3 0x10E JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x1BF JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0x1A0 JUMP JUMPDEST DUP4 DUP3 GT ISZERO PUSH3 0x1D1 JUMPI PUSH1 0x0 DUP4 DUP6 DUP4 ADD ADD MSTORE JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x215 DUP7 DUP4 DUP8 ADD PUSH3 0x124 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x22C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x23B DUP6 DUP3 DUP7 ADD PUSH3 0x124 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x25A JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0x27C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x8F0 DUP1 PUSH3 0x292 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x114 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0x70E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDF PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0x77F JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x77F JUMP JUMPDEST PUSH2 0x324 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x7E5 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 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x35B JUMP JUMPDEST PUSH2 0xDF PUSH2 0x175 CALLDATASIZE PUSH1 0x4 PUSH2 0x77F JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST PUSH2 0xDF PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0x77F JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x807 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1D5 SWAP1 PUSH2 0x83A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x201 SWAP1 PUSH2 0x83A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x223 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x24E 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 0x231 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265 CALLER DUP5 DUP5 PUSH2 0x412 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27B DUP5 DUP5 DUP5 PUSH2 0x536 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x305 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6C6C6F77616E6365 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x319 DUP6 CALLER PUSH2 0x314 DUP7 DUP6 PUSH2 0x88B JUMP JUMPDEST PUSH2 0x412 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x265 SWAP2 DUP6 SWAP1 PUSH2 0x314 SWAP1 DUP7 SWAP1 PUSH2 0x8A2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1D5 SWAP1 PUSH2 0x83A JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x3EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH2 0x3FB CALLER DUP6 PUSH2 0x314 DUP7 DUP6 PUSH2 0x88B JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265 CALLER DUP5 DUP5 PUSH2 0x536 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x474 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x59A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH2 0x67E DUP3 DUP3 PUSH2 0x88B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x6B4 SWAP1 DUP5 SWAP1 PUSH2 0x8A2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x700 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x73B JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x71F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x77A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x79B DUP4 PUSH2 0x763 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7C7 DUP5 PUSH2 0x763 JUMP JUMPDEST SWAP3 POP PUSH2 0x7D5 PUSH1 0x20 DUP6 ADD PUSH2 0x763 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x800 DUP3 PUSH2 0x763 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x823 DUP4 PUSH2 0x763 JUMP JUMPDEST SWAP2 POP PUSH2 0x831 PUSH1 0x20 DUP5 ADD PUSH2 0x763 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x84E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x86F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x89D JUMPI PUSH2 0x89D PUSH2 0x875 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x8B5 JUMPI PUSH2 0x8B5 PUSH2 0x875 JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB SWAP4 SMOD 0xA5 0x2D 0x2B 0xB3 0x2B MSTORE8 PUSH23 0x1A1511CF8B480B50BEE2D6CA47EF3403E3EC72E7411A64 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "1321:9279:0:-:0;;;1898:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1965:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1988:17:0;;;;:7;;:17;;;;;:::i;:::-;;1898:114;;1321:9279;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1321:9279:0;;;-1:-1:-1;1321:9279:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:22;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:885;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:22;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:22;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;930:2;927:1;924:9;921:80;;;989:1;984:2;979;971:6;967:15;963:24;956:35;921:80;1019:6;146:885;-1:-1:-1;;;;;;146:885:22:o;1036:562::-;1135:6;1143;1196:2;1184:9;1175:7;1171:23;1167:32;1164:52;;;1212:1;1209;1202:12;1164:52;1239:16;;-1:-1:-1;;;;;1304:14:22;;;1301:34;;;1331:1;1328;1321:12;1301:34;1354:61;1407:7;1398:6;1387:9;1383:22;1354:61;:::i;:::-;1344:71;;1461:2;1450:9;1446:18;1440:25;1424:41;;1490:2;1480:8;1477:16;1474:36;;;1506:1;1503;1496:12;1474:36;;1529:63;1584:7;1573:8;1562:9;1558:24;1529:63;:::i;:::-;1519:73;;;1036:562;;;;;:::o;1603:380::-;1682:1;1678:12;;;;1725;;;1746:61;;1800:4;1792:6;1788:17;1778:27;;1746:61;1853:2;1845:6;1842:14;1822:18;1819:38;1816:161;;;1899:10;1894:3;1890:20;1887:1;1880:31;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;1816:161;;1603:380;;;:::o;:::-;1321:9279:0;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_approve_494": {
                                    "entryPoint": 1042,
                                    "id": 494,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_beforeTokenTransfer_505": {
                                    "entryPoint": null,
                                    "id": 505,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1140": {
                                    "entryPoint": null,
                                    "id": 1140,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_transfer_340": {
                                    "entryPoint": 1334,
                                    "id": 340,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@allowance_137": {
                                    "entryPoint": null,
                                    "id": 137,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@approve_158": {
                                    "entryPoint": 600,
                                    "id": 158,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@balanceOf_98": {
                                    "entryPoint": null,
                                    "id": 98,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@decimals_74": {
                                    "entryPoint": null,
                                    "id": 74,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@decreaseAllowance_270": {
                                    "entryPoint": 874,
                                    "id": 270,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@increaseAllowance_232": {
                                    "entryPoint": 804,
                                    "id": 232,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@name_54": {
                                    "entryPoint": 454,
                                    "id": 54,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@symbol_64": {
                                    "entryPoint": 859,
                                    "id": 64,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@totalSupply_84": {
                                    "entryPoint": null,
                                    "id": 84,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@transferFrom_205": {
                                    "entryPoint": 622,
                                    "id": 205,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@transfer_119": {
                                    "entryPoint": 1029,
                                    "id": 119,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_address": {
                                    "entryPoint": 1891,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 2021,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_address": {
                                    "entryPoint": 2055,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256": {
                                    "entryPoint": 1961,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_uint256": {
                                    "entryPoint": 1919,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 1806,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 2210,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint256": {
                                    "entryPoint": 2187,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 2106,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 2165,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:6022:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "135:476:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "145:12:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "155:2:22",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "149:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "173:9:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "184:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "166:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "166:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "166:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "196:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "216:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "210:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "210:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "200:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "243:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "254:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "239:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "239:18:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "259:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "232:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "232:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "232:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "275:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "284:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "279:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "344:90:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "373:9:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "384:1:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "369:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "369:17:22"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "388:2:22",
                                                                                            "type": "",
                                                                                            "value": "64"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "365:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "365:26:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "value0",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "407:6:22"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "415:1:22"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "403:3:22"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "403:14:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "419:2:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "399:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "399:23:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "393:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "393:30:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "358:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "358:66:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "358:66:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "305:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "308:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "302:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "302:13:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "316:19:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "318:15:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "327:1:22"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "330:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "323:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "323:10:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "318:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "298:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "294:140:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "468:66:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "497:9:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "length",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "508:6:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "493:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "493:22:22"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "517:2:22",
                                                                                            "type": "",
                                                                                            "value": "64"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "489:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "489:31:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "522:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "482:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "482:42:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "482:42:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "449:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "452:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "446:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "446:13:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "443:91:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "543:62:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "559:9:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "578:6:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "586:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "574:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "574:15:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "595:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "591:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "591:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "570:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "570:29:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "555:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "555:45:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "602:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "551:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "551:54:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "543:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "104:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "115:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "126:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:597:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "665:124:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "675:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "697:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "684:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "684:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "675:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "767:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "776:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "779:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "769:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "769:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "769:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "726:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "737:5:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "752:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "757:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "748:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "748:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "761:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "744:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "744:19:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "733:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "733:31:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "723:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "723:42:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "716:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "716:50:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "713:70:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "644:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "655:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "616:173:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "881:167:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "927:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "936:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "939:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "929:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "929:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "929:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "902:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "911:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "898:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "898:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "923:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "894:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "894:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "891:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "952:39:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "981:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "962:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "962:29:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "952:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1000:42:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1027:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1038:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1023:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1023:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1010:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1010:32:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1000:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "839:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "850:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "862:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "870:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "794:254:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1148:92:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1158:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1170:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1181:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1166:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1166:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1158:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1200:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1225:6:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1218:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1218:14:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1211:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1211:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1193:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1193:41:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1193:41:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1117:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1128:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1139:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1053:187:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1346:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1356:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1368:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1379:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1364:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1364:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1356:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1398:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1409:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1391:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1391:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1391:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1315:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1326:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1337:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1245:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1531:224:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1577:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1586:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1589:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1579:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1579:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1579:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1552:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1561:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1548:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1548:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1573:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1544:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1544:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1541:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1602:39:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1631:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1612:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1612:29:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1602:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1650:48:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1683:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1694:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1679:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1679:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1660:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1660:38:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1650:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1707:42:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1734:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1745:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1730:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1730:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1717:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1717:32:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1707:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1481:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1492:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1504:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1512:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1520:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1427:328:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1857:87:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1867:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1879:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1890:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1875:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1875:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1867:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1909:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1924:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1932:4:22",
                                                                                "type": "",
                                                                                "value": "0xff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1920:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1920:17:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1902:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1902:36:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1902:36:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1826:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1837:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1848:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1760:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2019:116:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2065:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2074:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2077:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2067:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2067:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2067:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2040:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2049:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2036:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2036:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2061:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2032:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2032:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2029:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2090:39:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2119:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2100:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2100:29:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2090:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1985:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1996:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2008:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1949:186:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2227:173:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2273:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2282:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2285:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2275:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2275:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2275:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2248:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2257:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2244:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2244:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2269:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2240:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2240:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2237:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2298:39:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2327:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2308:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2308:29:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2298:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2346:48:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2379:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2390:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2375:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2375:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2356:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2356:38:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2346:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2185:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2196:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2208:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2216:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2140:260:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2460:325:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2470:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2484:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2487:4:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2480:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2480:12:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2470:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2501:38:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2531:4:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2537:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2527:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2527:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2505:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2578:31:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "2580:27:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2594:6:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2602:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2590:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2590:17:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2580:6:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2558:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2551:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2551:26:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2548:61:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2668:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2689:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "2696:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "2701:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2692:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "2692:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2682:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2682:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2682:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2733:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2736:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2726:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2726:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2726:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2761:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2764:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2754:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2754:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2754:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2624:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2647:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2655:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2644:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2644:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2621:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2621:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2618:161:22"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2440:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2449:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2405:380:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2964:230:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2981:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2992:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2974:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2974:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2974:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3015:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3026:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3011:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3011:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3031:2:22",
                                                                        "type": "",
                                                                        "value": "40"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3004:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3004:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3004:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3054:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3065:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3050:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3050:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3070:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer amount exceeds a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3043:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3043:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3043:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3125:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3136:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3121:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3121:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6c6c6f77616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3141:10:22",
                                                                        "type": "",
                                                                        "value": "llowance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3114:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3114:38:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3114:38:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3161:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3173:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3184:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3169:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3169:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3161:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2941:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2955:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2790:404:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3231:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3248:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3255:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3260:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3251:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3251:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3241:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3241:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3241:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3288:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3291:4:22",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3281:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3281:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3281:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3312:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3315:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3305:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3305:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3305:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "3199:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3380:76:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3402:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3404:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3404:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3404:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3396:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3399:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3393:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3393:8:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3390:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3433:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3445:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3448:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3441:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3441:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3433:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3362:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3365:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3371:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3331:125:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3509:80:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3536:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3538:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3538:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3538:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3525:1:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3532:1:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3528:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3528:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3522:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3522:13:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3519:39:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3567:16:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3578:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3581:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3574:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3574:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3567:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3492:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3495:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3501:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3461:128:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3768:227:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3785:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3796:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3778:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3778:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3778:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3819:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3830:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3815:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3815:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3835:2:22",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3808:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3808:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3808:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3858:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3869:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3854:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3854:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3874:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: decreased allowance below"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3847:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3847:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3847:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3929:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3940:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3925:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3925:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "207a65726f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3945:7:22",
                                                                        "type": "",
                                                                        "value": " zero"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3918:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3918:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3918:35:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3962:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3974:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3985:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3970:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3970:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3962:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3745:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3759:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3594:401:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4174:226:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4191:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4202:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4184:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4184:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4184:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4225:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4236:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4221:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4221:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4241:2:22",
                                                                        "type": "",
                                                                        "value": "36"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4214:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4214:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4214:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4264:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4275:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4260:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4260:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4280:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: approve from the zero add"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4253:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4253:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4253:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4335:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4346:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4331:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4331:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "72657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4351:6:22",
                                                                        "type": "",
                                                                        "value": "ress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4324:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4324:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4324:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4367:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4379:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4390:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4375:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4375:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4367:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4151:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4165:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4000:400:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4579:224:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4596:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4607:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4589:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4589:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4589:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4630:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4641:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4626:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4626:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4646:2:22",
                                                                        "type": "",
                                                                        "value": "34"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4619:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4619:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4619:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4669:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4680:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4665:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4665:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4685:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: approve to the zero addre"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4658:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4658:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4658:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4740:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4751:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4736:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4736:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "7373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4756:4:22",
                                                                        "type": "",
                                                                        "value": "ss"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4729:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4729:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4729:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4770:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4782:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4793:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4778:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4778:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4770:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4556:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4570:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4405:398:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4982:227:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4999:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5010:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4992:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4992:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4992:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5033:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5044:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5029:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5029:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5049:2:22",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5022:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5022:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5022:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5072:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5083:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5068:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5068:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5088:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer from the zero ad"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5061:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5061:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5061:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5143:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5154:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5139:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5139:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5159:7:22",
                                                                        "type": "",
                                                                        "value": "dress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5132:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5132:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5132:35:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5176:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5188:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5199:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5184:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5184:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5176:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4959:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4973:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4808:401:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5388:225:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5405:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5416:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5398:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5398:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5398:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5439:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5450:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5435:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5435:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5455:2:22",
                                                                        "type": "",
                                                                        "value": "35"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5428:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5428:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5428:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5478:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5489:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5474:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5474:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5494:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer to the zero addr"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5467:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5467:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5467:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5549:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5560:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5545:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5545:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5565:5:22",
                                                                        "type": "",
                                                                        "value": "ess"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5538:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5538:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5538:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5580:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5592:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5603:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5588:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5588:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5580:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5365:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5379:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5214:399:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5792:228:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5809:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5820:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5802:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5802:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5802:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5843:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5854:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5839:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5839:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5859:2:22",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5832:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5832:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5832:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5882:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5893:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5878:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5878:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5898:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer amount exceeds b"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5871:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5871:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5871:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5953:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5964:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5949:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5949:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "616c616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5969:8:22",
                                                                        "type": "",
                                                                        "value": "alance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5942:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5942:36:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5942:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5987:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5999:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6010:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5995:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5995:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5987:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5769:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5783:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5618:402:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), 0)\n        }\n        tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\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_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\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 abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds a\")\n        mstore(add(headStart, 96), \"llowance\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101c6565b6040516100c3919061070e565b60405180910390f35b6100df6100da36600461077f565b610258565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f3660046107a9565b61026e565b604051601281526020016100c3565b6100df61013136600461077f565b610324565b6100f36101443660046107e5565b6001600160a01b031660009081526020819052604090205490565b6100b661035b565b6100df61017536600461077f565b61036a565b6100df61018836600461077f565b610405565b6100f361019b366004610807565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101d59061083a565b80601f01602080910402602001604051908101604052809291908181526020018280546102019061083a565b801561024e5780601f106102235761010080835404028352916020019161024e565b820191906000526020600020905b81548152906001019060200180831161023157829003601f168201915b5050505050905090565b6000610265338484610412565b50600192915050565b600061027b848484610536565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156103055760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6103198533610314868561088b565b610412565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916102659185906103149086906108a2565b6060600480546101d59061083a565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103ec5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102fc565b6103fb3385610314868561088b565b5060019392505050565b6000610265338484610536565b6001600160a01b0383166104745760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102fc565b6001600160a01b0382166104d55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102fc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661059a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102fc565b6001600160a01b0382166105fc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102fc565b6001600160a01b038316600090815260208190526040902054818110156106745760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102fc565b61067e828261088b565b6001600160a01b0380861660009081526020819052604080822093909355908516815290812080548492906106b49084906108a2565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161070091815260200190565b60405180910390a350505050565b600060208083528351808285015260005b8181101561073b5785810183015185820160400152820161071f565b8181111561074d576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461077a57600080fd5b919050565b6000806040838503121561079257600080fd5b61079b83610763565b946020939093013593505050565b6000806000606084860312156107be57600080fd5b6107c784610763565b92506107d560208501610763565b9150604084013590509250925092565b6000602082840312156107f757600080fd5b61080082610763565b9392505050565b6000806040838503121561081a57600080fd5b61082383610763565b915061083160208401610763565b90509250929050565b600181811c9082168061084e57607f821691505b6020821081141561086f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561089d5761089d610875565b500390565b600082198211156108b5576108b5610875565b50019056fea2646970667358221220bb9307a52d2bb32b53761a1511cf8b480b50bee2d6ca47ef3403e3ec72e7411a64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x123 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x136 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x167 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x17A JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x18D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xAE JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x114 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB6 PUSH2 0x1C6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xC3 SWAP2 SWAP1 PUSH2 0x70E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xDF PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0x77F JUMP JUMPDEST PUSH2 0x258 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0x7A9 JUMP JUMPDEST PUSH2 0x26E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xC3 JUMP JUMPDEST PUSH2 0xDF PUSH2 0x131 CALLDATASIZE PUSH1 0x4 PUSH2 0x77F JUMP JUMPDEST PUSH2 0x324 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x144 CALLDATASIZE PUSH1 0x4 PUSH2 0x7E5 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 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0xB6 PUSH2 0x35B JUMP JUMPDEST PUSH2 0xDF PUSH2 0x175 CALLDATASIZE PUSH1 0x4 PUSH2 0x77F JUMP JUMPDEST PUSH2 0x36A JUMP JUMPDEST PUSH2 0xDF PUSH2 0x188 CALLDATASIZE PUSH1 0x4 PUSH2 0x77F JUMP JUMPDEST PUSH2 0x405 JUMP JUMPDEST PUSH2 0xF3 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x807 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 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 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x1D5 SWAP1 PUSH2 0x83A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x201 SWAP1 PUSH2 0x83A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x24E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x223 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x24E 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 0x231 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265 CALLER DUP5 DUP5 PUSH2 0x412 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27B DUP5 DUP5 DUP5 PUSH2 0x536 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x305 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6C6C6F77616E6365 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x319 DUP6 CALLER PUSH2 0x314 DUP7 DUP6 PUSH2 0x88B JUMP JUMPDEST PUSH2 0x412 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x265 SWAP2 DUP6 SWAP1 PUSH2 0x314 SWAP1 DUP7 SWAP1 PUSH2 0x8A2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x1D5 SWAP1 PUSH2 0x83A JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x3EC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH2 0x3FB CALLER DUP6 PUSH2 0x314 DUP7 DUP6 PUSH2 0x88B JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x265 CALLER DUP5 DUP5 PUSH2 0x536 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x474 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4D5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x59A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x5FC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x674 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x2FC JUMP JUMPDEST PUSH2 0x67E DUP3 DUP3 PUSH2 0x88B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x6B4 SWAP1 DUP5 SWAP1 PUSH2 0x8A2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x700 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x73B JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x71F JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x74D JUMPI PUSH1 0x0 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x77A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x792 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x79B DUP4 PUSH2 0x763 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x7BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7C7 DUP5 PUSH2 0x763 JUMP JUMPDEST SWAP3 POP PUSH2 0x7D5 PUSH1 0x20 DUP6 ADD PUSH2 0x763 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x800 DUP3 PUSH2 0x763 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x823 DUP4 PUSH2 0x763 JUMP JUMPDEST SWAP2 POP PUSH2 0x831 PUSH1 0x20 DUP5 ADD PUSH2 0x763 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x84E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x86F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x89D JUMPI PUSH2 0x89D PUSH2 0x875 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x8B5 JUMPI PUSH2 0x8B5 PUSH2 0x875 JUMP JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBB SWAP4 SMOD 0xA5 0x2D 0x2B 0xB3 0x2B MSTORE8 PUSH23 0x1A1511CF8B480B50BEE2D6CA47EF3403E3EC72E7411A64 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "1321:9279:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4174:166;;;;;;:::i;:::-;;:::i;:::-;;;1218:14:22;;1211:22;1193:41;;1181:2;1166:18;4174:166:0;1053:187:22;3165:106:0;3252:12;;3165:106;;;1391:25:22;;;1379:2;1364:18;3165:106:0;1245:177:22;4807:414:0;;;;;;:::i;:::-;;:::i;3014:91::-;;;3096:2;1902:36:22;;1890:2;1875:18;3014:91:0;1760:184:22;5616:212:0;;;;;;:::i;:::-;;:::i;3329:125::-;;;;;;:::i;:::-;-1:-1:-1;;;;;3429:18:0;3403:7;3429:18;;;;;;;;;;;;3329:125;2288:102;;;:::i;6315:371::-;;;;;;:::i;:::-;;:::i;3657:172::-;;;;;;:::i;:::-;;:::i;3887:149::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4002:18:0;;;3976:7;4002:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3887:149;2077:98;2131:13;2163:5;2156:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:98;:::o;4174:166::-;4257:4;4273:39;665:10:5;4296:7:0;4305:6;4273:8;:39::i;:::-;-1:-1:-1;4329:4:0;4174:166;;;;:::o;4807:414::-;4913:4;4929:36;4939:6;4947:9;4958:6;4929:9;:36::i;:::-;-1:-1:-1;;;;;5003:19:0;;4976:24;5003:19;;;:11;:19;;;;;;;;665:10:5;5003:33:0;;;;;;;;5054:26;;;;5046:79;;;;-1:-1:-1;;;5046:79:0;;2992:2:22;5046:79:0;;;2974:21:22;3031:2;3011:18;;;3004:30;3070:34;3050:18;;;3043:62;-1:-1:-1;;;3121:18:22;;;3114:38;3169:19;;5046:79:0;;;;;;;;;5135:57;5144:6;665:10:5;5166:25:0;5185:6;5166:16;:25;:::i;:::-;5135:8;:57::i;:::-;-1:-1:-1;5210:4:0;;4807:414;-1:-1:-1;;;;4807:414:0:o;5616:212::-;665:10:5;5704:4:0;5752:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5752:34:0;;;;;;;;;;5704:4;;5720:80;;5743:7;;5752:47;;5789:10;;5752:47;:::i;2288:102::-;2344:13;2376:7;2369:14;;;;;:::i;6315:371::-;665:10:5;6408:4:0;6451:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6451:34:0;;;;;;;;;;6503:35;;;;6495:85;;;;-1:-1:-1;;;6495:85:0;;3796:2:22;6495:85:0;;;3778:21:22;3835:2;3815:18;;;3808:30;3874:34;3854:18;;;3847:62;-1:-1:-1;;;3925:18:22;;;3918:35;3970:19;;6495:85:0;3594:401:22;6495:85:0;6590:67;665:10:5;6613:7:0;6622:34;6641:15;6622:16;:34;:::i;6590:67::-;-1:-1:-1;6675:4:0;;6315:371;-1:-1:-1;;;6315:371:0:o;3657:172::-;3743:4;3759:42;665:10:5;3783:9:0;3794:6;3759:9;:42::i;9579:340::-;-1:-1:-1;;;;;9680:19:0;;9672:68;;;;-1:-1:-1;;;9672:68:0;;4202:2:22;9672:68:0;;;4184:21:22;4241:2;4221:18;;;4214:30;4280:34;4260:18;;;4253:62;-1:-1:-1;;;4331:18:22;;;4324:34;4375:19;;9672:68:0;4000:400:22;9672:68:0;-1:-1:-1;;;;;9758:21:0;;9750:68;;;;-1:-1:-1;;;9750:68:0;;4607:2:22;9750:68:0;;;4589:21:22;4646:2;4626:18;;;4619:30;4685:34;4665:18;;;4658:62;-1:-1:-1;;;4736:18:22;;;4729:32;4778:19;;9750:68:0;4405:398:22;9750:68:0;-1:-1:-1;;;;;9829:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9880:32;;1391:25:22;;;9880:32:0;;1364:18:22;9880:32:0;;;;;;;9579:340;;;:::o;7160:592::-;-1:-1:-1;;;;;7265:20:0;;7257:70;;;;-1:-1:-1;;;7257:70:0;;5010:2:22;7257:70:0;;;4992:21:22;5049:2;5029:18;;;5022:30;5088:34;5068:18;;;5061:62;-1:-1:-1;;;5139:18:22;;;5132:35;5184:19;;7257:70:0;4808:401:22;7257:70:0;-1:-1:-1;;;;;7345:23:0;;7337:71;;;;-1:-1:-1;;;7337:71:0;;5416:2:22;7337:71:0;;;5398:21:22;5455:2;5435:18;;;5428:30;5494:34;5474:18;;;5467:62;-1:-1:-1;;;5545:18:22;;;5538:33;5588:19;;7337:71:0;5214:399:22;7337:71:0;-1:-1:-1;;;;;7501:17:0;;7477:21;7501:17;;;;;;;;;;;7536:23;;;;7528:74;;;;-1:-1:-1;;;7528:74:0;;5820:2:22;7528:74:0;;;5802:21:22;5859:2;5839:18;;;5832:30;5898:34;5878:18;;;5871:62;-1:-1:-1;;;5949:18:22;;;5942:36;5995:19;;7528:74:0;5618:402:22;7528:74:0;7632:22;7648:6;7632:13;:22;:::i;:::-;-1:-1:-1;;;;;7612:17:0;;;:9;:17;;;;;;;;;;;:42;;;;7664:20;;;;;;;;:30;;7688:6;;7612:9;7664:30;;7688:6;;7664:30;:::i;:::-;;;;;;;;7727:9;-1:-1:-1;;;;;7710:35:0;7719:6;-1:-1:-1;;;;;7710:35:0;;7738:6;7710:35;;;;1391:25:22;;1379:2;1364:18;;1245:177;7710:35:0;;;;;;;;7247:505;7160:592;;;:::o;14:597:22:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:22;574:15;-1:-1:-1;;570:29:22;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:22:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:22;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:22:o;1427:328::-;1504:6;1512;1520;1573:2;1561:9;1552:7;1548:23;1544:32;1541:52;;;1589:1;1586;1579:12;1541:52;1612:29;1631:9;1612:29;:::i;:::-;1602:39;;1660:38;1694:2;1683:9;1679:18;1660:38;:::i;:::-;1650:48;;1745:2;1734:9;1730:18;1717:32;1707:42;;1427:328;;;;;:::o;1949:186::-;2008:6;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;2100:29;2119:9;2100:29;:::i;:::-;2090:39;1949:186;-1:-1:-1;;;1949:186:22:o;2140:260::-;2208:6;2216;2269:2;2257:9;2248:7;2244:23;2240:32;2237:52;;;2285:1;2282;2275:12;2237:52;2308:29;2327:9;2308:29;:::i;:::-;2298:39;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2140:260;;;;;:::o;2405:380::-;2484:1;2480:12;;;;2527;;;2548:61;;2602:4;2594:6;2590:17;2580:27;;2548:61;2655:2;2647:6;2644:14;2624:18;2621:38;2618:161;;;2701:10;2696:3;2692:20;2689:1;2682:31;2736:4;2733:1;2726:15;2764:4;2761:1;2754:15;2618:161;;2405:380;;;:::o;3199:127::-;3260:10;3255:3;3251:20;3248:1;3241:31;3291:4;3288:1;3281:15;3315:4;3312:1;3305:15;3331:125;3371:4;3399:1;3396;3393:8;3390:34;;;3404:18;;:::i;:::-;-1:-1:-1;3441:9:22;;3331:125::o;3461:128::-;3501:3;3532:1;3528:6;3525:1;3522:13;3519:39;;;3538:18;;:::i;:::-;-1:-1:-1;3574:9:22;;3461:128::o"
                        },
                        "methodIdentifiers": {
                            "allowance(address,address)": "dd62ed3e",
                            "approve(address,uint256)": "095ea7b3",
                            "balanceOf(address)": "70a08231",
                            "decimals()": "313ce567",
                            "decreaseAllowance(address,uint256)": "a457c2d7",
                            "increaseAllowance(address,uint256)": "39509351",
                            "name()": "06fdde03",
                            "symbol()": "95d89b41",
                            "totalSupply()": "18160ddd",
                            "transfer(address,uint256)": "a9059cbb",
                            "transferFrom(address,address,uint256)": "23b872dd"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"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\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. For a generic mechanism see {ERC20PresetMinterPauser}. TIP: For a detailed writeup see our guide https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. We have followed general OpenZeppelin guidelines: functions revert instead of returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC20 applications. Additionally, an {Approval} event is emitted on calls to {transferFrom}. This allows applications to reconstruct the allowance for all accounts just by listening to said events. Other implementations of the EIP may not emit these events, as it isn't required by the specification. Finally, the non-standard {decreaseAllowance} and {increaseAllowance} functions have been added to mitigate the well-known issues around setting allowances. See {IERC20-approve}.\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. The defaut value of {decimals} is 18. To select a different value for {decimals} you should overload it. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xfeccdcbf67b2006a715e5af1a4c7556004d95b2806552b5cc54e46e8eb7e887b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45b1f9043c0fb450272f20ed19ef633fcba1b129d602651a856dfae1a2243a2c\",\"dweb:/ipfs/QmUTSQiDikkcNtTtyDpkEwCM5ztVUUh9c1inBukn6HC5Vr\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc2bfdea0d2562c76fb3c4cf70a86c6ba25c5a30e8f8515c95aafdf8383f8395\",\"dweb:/ipfs/QmTbFya18786ckJfLYUoWau9jBTKfmWnWm5XSViWvB7PXN\"]}},\"version\":1}"
                }
            },
            "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
                "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": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "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"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"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\"}],\"devdoc\":{\"details\":\"Interface of the ERC20 standard as defined in the EIP.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]}},\"version\":1}"
                }
            },
            "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
                "IERC20Metadata": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "owner",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "value",
                                    "type": "uint256"
                                }
                            ],
                            "name": "Approval",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "from",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "to",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "value",
                                    "type": "uint256"
                                }
                            ],
                            "name": "Transfer",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "owner",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                }
                            ],
                            "name": "allowance",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "approve",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "account",
                                    "type": "address"
                                }
                            ],
                            "name": "balanceOf",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "decimals",
                            "outputs": [
                                {
                                    "internalType": "uint8",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "name",
                            "outputs": [
                                {
                                    "internalType": "string",
                                    "name": "",
                                    "type": "string"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "symbol",
                            "outputs": [
                                {
                                    "internalType": "string",
                                    "name": "",
                                    "type": "string"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "totalSupply",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "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": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "allowance(address,address)": "dd62ed3e",
                            "approve(address,uint256)": "095ea7b3",
                            "balanceOf(address)": "70a08231",
                            "decimals()": "313ce567",
                            "name()": "06fdde03",
                            "symbol()": "95d89b41",
                            "totalSupply()": "18160ddd",
                            "transfer(address,uint256)": "a9059cbb",
                            "transferFrom(address,address,uint256)": "23b872dd"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"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\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC20 standard. _Available since v4.1._\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the amount of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the amount of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]}},\"version\":1}"
                }
            },
            "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
                "SafeERC20": {
                    "abi": [],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d60572d48b08e5ebdb5af3a3ee05b477daa5ca934f0a08d5e1b2d414f579976764736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xD6 SDIV PUSH19 0xD48B08E5EBDB5AF3A3EE05B477DAA5CA934F0A ADDMOD 0xD5 0xE1 0xB2 0xD4 EQ CREATE2 PUSH26 0x976764736F6C6343000809003300000000000000000000000000 ",
                            "sourceMap": "578:3197:3:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;578:3197:3;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d60572d48b08e5ebdb5af3a3ee05b477daa5ca934f0a08d5e1b2d414f579976764736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD6 SDIV PUSH19 0xD48B08E5EBDB5AF3A3EE05B477DAA5CA934F0A ADDMOD 0xD5 0xE1 0xB2 0xD4 EQ CREATE2 PUSH26 0x976764736F6C6343000809003300000000000000000000000000 ",
                            "sourceMap": "578:3197:3:-:0;;;;;;;;"
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers around ERC20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b31b80dd57f8c28320b01fa4f3ed98ac1aa678f61846c1db2771c996b77a9451\",\"dweb:/ipfs/QmcT2Di5L9t82A9XdYDZ4tWMEPGFVFazKDwC2Vrd135AA3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a4c96fafff76deda5697c3c5c98cade6e6e1b178254544c106bf360c079ce4e\",\"dweb:/ipfs/QmXmxubE3jnatFgZuN8ay1VV6hZ8WRmhvUjNpeVjki15HX\"]}},\"version\":1}"
                }
            },
            "@openzeppelin/contracts/utils/Address.sol": {
                "Address": {
                    "abi": [],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b9c568ce12416d2cd0f1b2e4ee1c8040c6cf9e82b2cf7225b9e15bc1b138d87164736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xB9 0xC5 PUSH9 0xCE12416D2CD0F1B2E4 0xEE SHR DUP1 BLOCKHASH 0xC6 0xCF SWAP15 DUP3 0xB2 0xCF PUSH19 0x25B9E15BC1B138D87164736F6C634300080900 CALLER ",
                            "sourceMap": "126:7684:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;126:7684:4;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b9c568ce12416d2cd0f1b2e4ee1c8040c6cf9e82b2cf7225b9e15bc1b138d87164736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 0xC5 PUSH9 0xCE12416D2CD0F1B2E4 0xEE SHR DUP1 BLOCKHASH 0xC6 0xCF SWAP15 DUP3 0xB2 0xCF PUSH19 0x25B9E15BC1B138D87164736F6C634300080900 CALLER ",
                            "sourceMap": "126:7684:4:-:0;;;;;;;;"
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a4c96fafff76deda5697c3c5c98cade6e6e1b178254544c106bf360c079ce4e\",\"dweb:/ipfs/QmXmxubE3jnatFgZuN8ay1VV6hZ8WRmhvUjNpeVjki15HX\"]}},\"version\":1}"
                }
            },
            "@openzeppelin/contracts/utils/Context.sol": {
                "Context": {
                    "abi": [],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc2bfdea0d2562c76fb3c4cf70a86c6ba25c5a30e8f8515c95aafdf8383f8395\",\"dweb:/ipfs/QmTbFya18786ckJfLYUoWau9jBTKfmWnWm5XSViWvB7PXN\"]}},\"version\":1}"
                }
            },
            "@openzeppelin/contracts/utils/math/SafeMath.sol": {
                "SafeMath": {
                    "abi": [],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc63b00463008fa853766f63ea3e1ac288aa91ce42aaecfabb7bf055f0eba0a164736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xFC PUSH4 0xB0046300 DUP16 0xA8 MSTORE8 PUSH23 0x6F63EA3E1AC288AA91CE42AAECFABB7BF055F0EBA0A164 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "398:6434:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;398:6434:6;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fc63b00463008fa853766f63ea3e1ac288aa91ce42aaecfabb7bf055f0eba0a164736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xFC PUSH4 0xB0046300 DUP16 0xA8 MSTORE8 PUSH23 0x6F63EA3E1AC288AA91CE42AAECFABB7BF055F0EBA0A164 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "398:6434:6:-:0;;;;;;;;"
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations. NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f9529d3d365e8415155cee11394e0f7c0de2152b601b7e77508fce16cb4a509\",\"dweb:/ipfs/QmVhbcLVsAzvqfjsdLwy25XMjgVJm7Z3w2JCNiNbZF2GHT\"]}},\"version\":1}"
                }
            },
            "@openzeppelin/contracts/utils/math/SignedSafeMath.sol": {
                "SignedSafeMath": {
                    "abi": [],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cab33c7cd039588e57c43b48a67a6cb4709de5366a84cc5d8a9b382cce5a133b64736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xCA 0xB3 EXTCODECOPY PUSH29 0xD039588E57C43B48A67A6CB4709DE5366A84CC5D8A9B382CCE5A133B64 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "251:1399:7:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:1399:7;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cab33c7cd039588e57c43b48a67a6cb4709de5366a84cc5d8a9b382cce5a133b64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA 0xB3 EXTCODECOPY PUSH29 0xD039588E57C43B48A67A6CB4709DE5366A84CC5D8A9B382CCE5A133B64 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "251:1399:7:-:0;;;;;;;;"
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Wrappers over Solidity's arithmetic operations. NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler now has built in overflow checking.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":\"SignedSafeMath\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://873363c817ef68913ced271e77fc4af21d4a94ffba23de2b205c6e9de8ff6b72\",\"dweb:/ipfs/QmNmN46R3rrvTxMUjDTbZiCiqqTX9TRvWbiaN9qLrWQXPS\"]}},\"version\":1}"
                }
            },
            "contracts/common/implementation/AncillaryData.sol": {
                "AncillaryData": {
                    "abi": [],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cf245eab5321973d47a27b111676f68ecd618eb47982aac66bfbf72f1776d15264736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xCF 0x24 0x5E 0xAB MSTORE8 0x21 SWAP8 RETURNDATASIZE SELFBALANCE LOG2 PUSH28 0x111676F68ECD618EB47982AAC66BFBF72F1776D15264736F6C634300 ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "663:6562:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;663:6562:8;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cf245eab5321973d47a27b111676f68ecd618eb47982aac66bfbf72f1776d15264736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCF 0x24 0x5E 0xAB MSTORE8 0x21 SWAP8 RETURNDATASIZE SELFBALANCE LOG2 PUSH28 0x111676F68ECD618EB47982AAC66BFBF72F1776D15264736F6C634300 ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "663:6562:8:-:0;;;;;;;;"
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for encoding and decoding ancillary data for DVM price requests.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity smart contracts. More details on UMA's ancillary data guidelines below: https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/AncillaryData.sol\":\"AncillaryData\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/AncillaryData.sol\":{\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0bbaed49756e8cf7ef405e132f441cd7a735ac6186a200b0179147e7d137b74a\",\"dweb:/ipfs/QmeSBJX5a61LZPxbkUKS2NF4LSxemgDwjD65fCAmyP7PX2\"]}},\"version\":1}"
                }
            },
            "contracts/common/implementation/FixedPoint.sol": {
                "FixedPoint": {
                    "abi": [],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122095ef72561ecc3ca865743bfd7b03d90bf5e8d1ab5ee7568f730899ce10be47de64736f6c63430008090033",
                            "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 SWAP6 0xEF PUSH19 0x561ECC3CA865743BFD7B03D90BF5E8D1AB5EE7 JUMP DUP16 PUSH20 0x899CE10BE47DE64736F6C634300080900330000 ",
                            "sourceMap": "252:28526:9:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;252:28526:9;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122095ef72561ecc3ca865743bfd7b03d90bf5e8d1ab5ee7568f730899ce10be47de64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP6 0xEF PUSH19 0x561ECC3CA865743BFD7B03D90BF5E8D1AB5EE7 JUMP DUP16 PUSH20 0x899CE10BE47DE64736F6C634300080900330000 ",
                            "sourceMap": "252:28526:9:-:0;;;;;;;;"
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Library for fixed point arithmetic on uints\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f9529d3d365e8415155cee11394e0f7c0de2152b601b7e77508fce16cb4a509\",\"dweb:/ipfs/QmVhbcLVsAzvqfjsdLwy25XMjgVJm7Z3w2JCNiNbZF2GHT\"]},\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://873363c817ef68913ced271e77fc4af21d4a94ffba23de2b205c6e9de8ff6b72\",\"dweb:/ipfs/QmNmN46R3rrvTxMUjDTbZiCiqqTX9TRvWbiaN9qLrWQXPS\"]},\"contracts/common/implementation/FixedPoint.sol\":{\"keccak256\":\"0x996b97cc4fa5da4064e3aee500edc6972485d59a9334ceec81155e2c2f484dae\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d7c028926dc2b27e7dc103363dca8a43f60b3351f4a14bcb702660f95c68663\",\"dweb:/ipfs/QmXz4ieFjP5RxJ35F8GbPryYEGvFmxc4Gqx8EK7N57ixzT\"]}},\"version\":1}"
                }
            },
            "contracts/common/implementation/Lockable.sol": {
                "Lockable": {
                    "abi": [
                        {
                            "inputs": [],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_3582": {
                                    "entryPoint": null,
                                    "id": 3582,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b506000805460ff19166001179055603f80602a6000396000f3fe6080604052600080fdfea2646970667358221220ad42b0bb055a80eba615172fc578481c9c0931257519c962ef0b73a79287149564736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3F DUP1 PUSH1 0x2A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD TIMESTAMP 0xB0 0xBB SDIV GAS DUP1 0xEB 0xA6 ISZERO OR 0x2F 0xC5 PUSH25 0x481C9C0931257519C962EF0B73A79287149564736F6C634300 ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "405:2280:10:-:0;;;460:439;;;;;;;;;-1:-1:-1;874:11:10;:18;;-1:-1:-1;;874:18:10;888:4;874:18;;;405:2280;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052600080fdfea2646970667358221220ad42b0bb055a80eba615172fc578481c9c0931257519c962ef0b73a79287149564736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAD TIMESTAMP 0xB0 0xBB SDIV GAS DUP1 0xEB 0xA6 ISZERO OR 0x2F 0xC5 PUSH25 0x481C9C0931257519C962EF0B73A79287149564736F6C634300 ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "405:2280:10:-:0;;;;;"
                        },
                        "methodIdentifiers": {}
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/Lockable.sol\":\"Lockable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://aef5cb31ab23e1e6baad76130c29aff1ee3fcda3c4ffc80e0a5294341a253934\",\"dweb:/ipfs/QmNyso4UszNxE6un3Cqc3R7KiBmZzdWNULvjBDfnLRAmwc\"]}},\"version\":1}"
                }
            },
            "contracts/common/implementation/MultiCaller.sol": {
                "MultiCaller": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "data",
                                    "type": "bytes[]"
                                }
                            ],
                            "name": "multicall",
                            "outputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "results",
                                    "type": "bytes[]"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b506104da806100206000396000f3fe60806040526004361061001e5760003560e01c8063ac9650d814610023575b600080fd5b6100366100313660046101f7565b61004c565b60405161004391906102c8565b60405180910390f35b606034156100a15760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c7565000000000060448201526064015b60405180910390fd5b8167ffffffffffffffff8111156100ba576100ba61032a565b6040519080825280602002602001820160405280156100ed57816020015b60608152602001906001900390816100d85790505b50905060005b828110156101f0576000803086868581811061011157610111610340565b90506020028101906101239190610356565b6040516101319291906103a4565b600060405180830381855af49150503d806000811461016c576040519150601f19603f3d011682016040523d82523d6000602084013e610171565b606091505b5091509150816101bd5760448151101561018a57600080fd5b600481019050808060200190518101906101a491906103b4565b60405162461bcd60e51b81526004016100989190610461565b808484815181106101d0576101d0610340565b6020026020010181905250505080806101e89061047b565b9150506100f3565b5092915050565b6000806020838503121561020a57600080fd5b823567ffffffffffffffff8082111561022257600080fd5b818501915085601f83011261023657600080fd5b81358181111561024557600080fd5b8660208260051b850101111561025a57600080fd5b60209290920196919550909350505050565b60005b8381101561028757818101518382015260200161026f565b83811115610296576000848401525b50505050565b600081518084526102b481602086016020860161026c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561031d57603f1988860301845261030b85835161029c565b945092850192908501906001016102ef565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261036d57600080fd5b83018035915067ffffffffffffffff82111561038857600080fd5b60200191503681900382131561039d57600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156103c657600080fd5b815167ffffffffffffffff808211156103de57600080fd5b818401915084601f8301126103f257600080fd5b8151818111156104045761040461032a565b604051601f8201601f19908116603f0116810190838211818310171561042c5761042c61032a565b8160405282815287602084870101111561044557600080fd5b61045683602083016020880161026c565b979650505050505050565b602081526000610474602083018461029c565b9392505050565b600060001982141561049d57634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122015fff3c51e62f58e4a5ba47c44710cd9145a96cb6c25d4e8bc730777f37ccd8b64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4DA DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43 SWAP2 SWAP1 PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0xA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA JUMPI PUSH2 0xBA PUSH2 0x32A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xED JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x111 JUMPI PUSH2 0x111 PUSH2 0x340 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x131 SWAP3 SWAP2 SWAP1 PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x16C 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 0x171 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1BD JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1A4 SWAP2 SWAP1 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x98 SWAP2 SWAP1 PUSH2 0x461 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1D0 JUMPI PUSH2 0x1D0 PUSH2 0x340 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x1E8 SWAP1 PUSH2 0x47B JUMP JUMPDEST SWAP2 POP POP PUSH2 0xF3 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x287 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2B4 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x26C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x31D JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x30B DUP6 DUP4 MLOAD PUSH2 0x29C JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2EF JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x404 JUMPI PUSH2 0x404 PUSH2 0x32A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x42C JUMPI PUSH2 0x42C PUSH2 0x32A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x456 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x26C JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x474 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x29C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x49D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO SELFDESTRUCT RETURN 0xC5 0x1E PUSH3 0xF58E4A JUMPDEST LOG4 PUSH29 0x44710CD9145A96CB6C25D4E8BC730777F37CCD8B64736F6C6343000809 STOP CALLER ",
                            "sourceMap": "501:739:11:-:0;;;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@multicall_3716": {
                                    "entryPoint": 76,
                                    "id": 3716,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                                    "entryPoint": 503,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                                    "entryPoint": 948,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_bytes": {
                                    "entryPoint": 668,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 932,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 712,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 1121,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "access_calldata_tail_t_bytes_calldata_ptr": {
                                    "entryPoint": 854,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 620,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "increment_t_uint256": {
                                    "entryPoint": 1147,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 832,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 810,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:4744:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "130:510:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "176:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "185:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "188:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "178:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "178:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "178:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "151:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "160:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "147:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "147:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "172:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "143:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "143:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "140:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "201:37:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "228:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "215:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "215:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "205:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "247:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "257:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "251:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "302:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "311:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "314:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "304:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "304:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "304:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "290:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "298:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "287:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "287:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "284:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "327:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "341:9:22"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "352:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "337:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "337:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "331:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "407:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "416:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "419:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "409:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "409:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "409:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "386:2:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "390:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "382:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "382:13:22"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "397:7:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "378:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "378:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "371:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "371:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "368:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "432:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "459:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "446:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "446:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "436:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "489:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "498:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "501:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "491:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "491:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "491:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "477:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "485:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "474:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "474:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "471:34:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "563:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "572:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "575:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "565:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "565:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "565:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "528:2:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "536:1:22",
                                                                                                "type": "",
                                                                                                "value": "5"
                                                                                            },
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "539:6:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "532:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "532:14:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "524:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "524:23:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "549:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "520:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "520:32:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "554:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "517:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "517:45:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "514:65:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "588:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "602:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "606:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "598:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "598:11:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "588:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "618:16:22",
                                                            "value": {
                                                                "name": "length",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "628:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "618:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "88:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "99:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "111:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "119:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:626:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "698:205:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "708:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "717:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "712:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "777:63:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "802:3:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "807:1:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "798:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "798:11:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "821:3:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "826:1:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "817:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "817:11:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "811:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "811:18:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "791:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "791:39:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "791:39:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "738:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "741:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "735:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "735:13:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "749:19:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "751:15:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "760:1:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "763:2:22",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "756:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "756:10:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "751:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "731:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "727:113:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "866:31:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "879:3:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "884:6:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "875:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "875:16:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "893:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "868:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "868:27:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "868:27:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "855:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "858:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "852:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "852:13:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "849:48:22"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "676:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "681:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "686:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "645:258:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "957:208:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "967:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "987:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "981:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "981:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "971:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1009:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1014:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1002:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1002:19:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1002:19:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1056:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1063:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1052:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1052:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1074:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1079:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1070:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1070:14:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1086:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1030:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1030:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1030:63:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1102:57:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1117:3:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1130:6:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1138:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1126:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1126:15:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1147:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1143:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1143:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1122:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1122:29:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1113:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1113:39:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1154:4:22",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1109:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1109:50:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1102:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bytes",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "934:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "941:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "949:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "908:257:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1339:631:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1349:12:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1359:2:22",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1353:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1370:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1388:9:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1399:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1384:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1384:18:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1374:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1418:9:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1429:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1411:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1411:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1411:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1441:17:22",
                                                            "value": {
                                                                "name": "tail_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1452:6:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1445:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1467:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1487:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1481:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1481:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1471:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "tail_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1510:6:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1518:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1503:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1503:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1503:22:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1534:25:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1545:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1556:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1541:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1541:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1534:3:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1568:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1590:9:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "1605:1:22",
                                                                                        "type": "",
                                                                                        "value": "5"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1608:6:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1601:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1601:14:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1586:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1586:30:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1618:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1582:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1582:39:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1572:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1630:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1648:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1656:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1644:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1644:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1634:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1668:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "1677:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1672:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1736:205:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1757:3:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "tail_2",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1770:6:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1778:9:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "sub",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1766:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "1766:22:22"
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "kind": "number",
                                                                                                    "nodeType": "YulLiteral",
                                                                                                    "src": "1794:2:22",
                                                                                                    "type": "",
                                                                                                    "value": "63"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "not",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1790:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "1790:7:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1762:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1762:36:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1750:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1750:49:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1750:49:22"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1812:49:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "srcPtr",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1845:6:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1839:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1839:13:22"
                                                                                },
                                                                                {
                                                                                    "name": "tail_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1854:6:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "abi_encode_bytes",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1822:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1822:39:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "tail_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1812:6:22"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1874:25:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "srcPtr",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1888:6:22"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1896:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1884:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1884:15:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "srcPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1874:6:22"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1912:19:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1923:3:22"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1928:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1919:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1919:12:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1912:3:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1698:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1701:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1695:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1695:13:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1709:18:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "1711:14:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1720:1:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1723:1:22",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1716:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1716:9:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1711:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1691:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "1687:254:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1950:14:22",
                                                            "value": {
                                                                "name": "tail_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1958:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1950:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1308:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1319:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1330:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1170:800:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2149:177:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2166:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2177:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2159:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2159:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2159:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2200:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2211:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2196:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2196:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2216:2:22",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2189:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2189:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2189:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2239:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2250:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2235:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2235:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f6e6c79206d756c746963616c6c207769746820302076616c7565",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2255:29:22",
                                                                        "type": "",
                                                                        "value": "Only multicall with 0 value"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2228:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2228:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2228:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2294:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2306:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2317:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2302:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2302:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2294:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2126:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2140:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1975:351:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2363:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2380:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2387:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2392:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2383:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2383:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2373:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2373:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2373:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2420:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2423:4:22",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2413:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2413:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2413:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2444:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2447:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2437:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2437:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2437:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "2331:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2495:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2512:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2519:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2524:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2515:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2515:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2505:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2505:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2505:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2552:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2555:4:22",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2545:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2545:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2545:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2576:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2579:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2569:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2569:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2569:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "2463:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2689:427:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2699:51:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "ptr_to_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2738:11:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2725:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2725:25:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "rel_offset_of_tail",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2703:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2839:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2848:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2851:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2841:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2841:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2841:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "rel_offset_of_tail",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2773:18:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [],
                                                                                                "functionName": {
                                                                                                    "name": "calldatasize",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "2801:12:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "2801:14:22"
                                                                                            },
                                                                                            {
                                                                                                "name": "base_ref",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2817:8:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2797:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2797:29:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "2832:2:22",
                                                                                                "type": "",
                                                                                                "value": "30"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2828:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2828:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2793:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2793:43:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2769:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2769:68:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2762:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2762:76:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2759:96:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2864:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "base_ref",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2882:8:22"
                                                                    },
                                                                    {
                                                                        "name": "rel_offset_of_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2892:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2878:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2878:33:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "addr_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2868:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2920:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2943:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2930:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2930:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2920:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2993:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3002:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3005:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2995:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2995:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2995:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2965:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2973:18:22",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2962:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2962:30:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2959:50:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3018:25:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3030:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3038:4:22",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3026:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3026:17:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "addr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3018:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3094:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3103:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3106:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3096:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3096:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3096:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3059:4:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [],
                                                                                "functionName": {
                                                                                    "name": "calldatasize",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3069:12:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3069:14:22"
                                                                            },
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3085:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3065:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3065:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sgt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3055:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3055:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3052:58:22"
                                                        }
                                                    ]
                                                },
                                                "name": "access_calldata_tail_t_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "base_ref",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2646:8:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "ptr_to_tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2656:11:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "addr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2672:4:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2678:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2595:521:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3268:124:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3291:3:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3296:6:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3304:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3278:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3278:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3278:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3320:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3334:3:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3339:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3330:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3330:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3324:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3362:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3366:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3355:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3355:13:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3355:13:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3377:9:22",
                                                            "value": {
                                                                "name": "_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3384:2:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3377:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3236:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3241:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3249:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3260:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3121:271:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3488:793:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3534:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3543:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3546:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3536:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3536:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3536:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3509:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3518:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3505:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3505:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3530:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3501:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3501:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3498:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3559:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3579:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3573:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3573:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3563:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3598:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3608:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3602:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3653:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3662:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3665:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3655:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3655:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3655:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3641:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3649:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3638:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3638:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3635:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3678:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3692:9:22"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3703:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3688:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3688:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3682:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3758:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3767:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3770:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3760:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3760:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3760:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3737:2:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3741:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3733:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3733:13:22"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3748:7:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3729:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3729:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3722:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3722:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3719:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3783:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3799:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3793:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3793:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3787:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3825:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3827:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3827:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3827:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3817:2:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3821:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3814:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3814:10:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3811:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3856:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3870:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3866:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3866:7:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3860:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3882:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3902:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3896:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3896:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3886:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3914:71:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3936:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "3960:2:22"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "3964:4:22",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "3956:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "3956:13:22"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "3971:2:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3952:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3952:22:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3976:2:22",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3948:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3948:31:22"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3981:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3944:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3944:40:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3932:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3932:53:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3918:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4044:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4046:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4046:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4046:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4003:10:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4015:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4000:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4000:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4023:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4035:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4020:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4020:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3997:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3997:46:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3994:72:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4082:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4086:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4075:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4075:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4075:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4113:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4121:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4106:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4106:18:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4106:18:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4170:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4179:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4182:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4172:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4172:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4172:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4147:2:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4151:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4143:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4143:11:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4156:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4139:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4139:20:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4161:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4136:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4136:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4133:53:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4221:2:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4225:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4217:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4217:11:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4234:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4242:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4230:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4230:15:22"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4247:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4195:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4195:55:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4195:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4259:16:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4269:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4259:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3454:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3465:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3477:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3397:884:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4407:98:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4424:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4435:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4417:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4417:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4417:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4447:52:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4472:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4484:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4495:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4480:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4480:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bytes",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4455:16:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4455:44:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4447:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4376:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4387:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4398:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4286:219:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4557:185:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4596:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4617:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "4624:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "4629:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4620:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "4620:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4610:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4610:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4610:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4661:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4664:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x11"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4654:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4654:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4654:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4689:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4692:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4682:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4682:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4682:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4573:5:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4584:1:22",
                                                                                "type": "",
                                                                                "value": "0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4580:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4580:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4570:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4570:17:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4567:140:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4716:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4727:5:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4734:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4723:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4723:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4716:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4539:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4549:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4510:232:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\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 abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            tail_2 := abi_encode_bytes(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Only multicall with 0 value\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value0 := memPtr\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        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        ret := add(value, 1)\n    }\n}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "60806040526004361061001e5760003560e01c8063ac9650d814610023575b600080fd5b6100366100313660046101f7565b61004c565b60405161004391906102c8565b60405180910390f35b606034156100a15760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c7565000000000060448201526064015b60405180910390fd5b8167ffffffffffffffff8111156100ba576100ba61032a565b6040519080825280602002602001820160405280156100ed57816020015b60608152602001906001900390816100d85790505b50905060005b828110156101f0576000803086868581811061011157610111610340565b90506020028101906101239190610356565b6040516101319291906103a4565b600060405180830381855af49150503d806000811461016c576040519150601f19603f3d011682016040523d82523d6000602084013e610171565b606091505b5091509150816101bd5760448151101561018a57600080fd5b600481019050808060200190518101906101a491906103b4565b60405162461bcd60e51b81526004016100989190610461565b808484815181106101d0576101d0610340565b6020026020010181905250505080806101e89061047b565b9150506100f3565b5092915050565b6000806020838503121561020a57600080fd5b823567ffffffffffffffff8082111561022257600080fd5b818501915085601f83011261023657600080fd5b81358181111561024557600080fd5b8660208260051b850101111561025a57600080fd5b60209290920196919550909350505050565b60005b8381101561028757818101518382015260200161026f565b83811115610296576000848401525b50505050565b600081518084526102b481602086016020860161026c565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561031d57603f1988860301845261030b85835161029c565b945092850192908501906001016102ef565b5092979650505050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261036d57600080fd5b83018035915067ffffffffffffffff82111561038857600080fd5b60200191503681900382131561039d57600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156103c657600080fd5b815167ffffffffffffffff808211156103de57600080fd5b818401915084601f8301126103f257600080fd5b8151818111156104045761040461032a565b604051601f8201601f19908116603f0116810190838211818310171561042c5761042c61032a565b8160405282815287602084870101111561044557600080fd5b61045683602083016020880161026c565b979650505050505050565b602081526000610474602083018461029c565b9392505050565b600060001982141561049d57634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122015fff3c51e62f58e4a5ba47c44710cd9145a96cb6c25d4e8bc730777f37ccd8b64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x23 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x36 PUSH2 0x31 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x4C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x43 SWAP2 SWAP1 PUSH2 0x2C8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0xA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBA JUMPI PUSH2 0xBA PUSH2 0x32A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xED JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xD8 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x111 JUMPI PUSH2 0x111 PUSH2 0x340 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x123 SWAP2 SWAP1 PUSH2 0x356 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x131 SWAP3 SWAP2 SWAP1 PUSH2 0x3A4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x16C 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 0x171 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x1BD JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x18A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1A4 SWAP2 SWAP1 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x98 SWAP2 SWAP1 PUSH2 0x461 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1D0 JUMPI PUSH2 0x1D0 PUSH2 0x340 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x1E8 SWAP1 PUSH2 0x47B JUMP JUMPDEST SWAP2 POP POP PUSH2 0xF3 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x25A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x287 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x26F JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x2B4 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x26C JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x31D JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x30B DUP6 DUP4 MLOAD PUSH2 0x29C JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2EF JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x36D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x404 JUMPI PUSH2 0x404 PUSH2 0x32A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x42C JUMPI PUSH2 0x42C PUSH2 0x32A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x456 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x26C JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x474 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x29C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x49D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO SELFDESTRUCT RETURN 0xC5 0x1E PUSH3 0xF58E4A JUMPDEST LOG4 PUSH29 0x44710CD9145A96CB6C25D4E8BC730777F37CCD8B64736F6C6343000809 STOP CALLER ",
                            "sourceMap": "501:739:11:-:0;;;;;;;;;;;;;;;;;;;;;528:710;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;596:22;638:9;:14;630:54;;;;-1:-1:-1;;;630:54:11;;2177:2:22;630:54:11;;;2159:21:22;2216:2;2196:18;;;2189:30;2255:29;2235:18;;;2228:57;2302:18;;630:54:11;;;;;;;;;716:4;704:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:34;;743:9;738:494;758:15;;;738:494;;;795:12;;840:4;859;;864:1;859:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;832:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:73;;;;887:7;882:306;;1014:2;998:6;:13;:18;994:32;;;1018:8;;;994:32;1097:4;1089:6;1085:17;1075:27;;1155:6;1144:28;;;;;;;;;;;;:::i;:::-;1137:36;;-1:-1:-1;;;1137:36:11;;;;;;;;:::i;882:306::-;1215:6;1202:7;1210:1;1202:10;;;;;;;;:::i;:::-;;;;;;:19;;;;780:452;;775:3;;;;;:::i;:::-;;;;738:494;;;;528:710;;;;:::o;14:626:22:-;111:6;119;172:2;160:9;151:7;147:23;143:32;140:52;;;188:1;185;178:12;140:52;228:9;215:23;257:18;298:2;290:6;287:14;284:34;;;314:1;311;304:12;284:34;352:6;341:9;337:22;327:32;;397:7;390:4;386:2;382:13;378:27;368:55;;419:1;416;409:12;368:55;459:2;446:16;485:2;477:6;474:14;471:34;;;501:1;498;491:12;471:34;554:7;549:2;539:6;536:1;532:14;528:2;524:23;520:32;517:45;514:65;;;575:1;572;565:12;514:65;606:2;598:11;;;;;628:6;;-1:-1:-1;14:626:22;;-1:-1:-1;;;;14:626:22:o;645:258::-;717:1;727:113;741:6;738:1;735:13;727:113;;;817:11;;;811:18;798:11;;;791:39;763:2;756:10;727:113;;;858:6;855:1;852:13;849:48;;;893:1;884:6;879:3;875:16;868:27;849:48;;645:258;;;:::o;908:257::-;949:3;987:5;981:12;1014:6;1009:3;1002:19;1030:63;1086:6;1079:4;1074:3;1070:14;1063:4;1056:5;1052:16;1030:63;:::i;:::-;1147:2;1126:15;-1:-1:-1;;1122:29:22;1113:39;;;;1154:4;1109:50;;908:257;-1:-1:-1;;908:257:22:o;1170:800::-;1330:4;1359:2;1399;1388:9;1384:18;1429:2;1418:9;1411:21;1452:6;1487;1481:13;1518:6;1510;1503:22;1556:2;1545:9;1541:18;1534:25;;1618:2;1608:6;1605:1;1601:14;1590:9;1586:30;1582:39;1568:53;;1656:2;1648:6;1644:15;1677:1;1687:254;1701:6;1698:1;1695:13;1687:254;;;1794:2;1790:7;1778:9;1770:6;1766:22;1762:36;1757:3;1750:49;1822:39;1854:6;1845;1839:13;1822:39;:::i;:::-;1812:49;-1:-1:-1;1919:12:22;;;;1884:15;;;;1723:1;1716:9;1687:254;;;-1:-1:-1;1958:6:22;;1170:800;-1:-1:-1;;;;;;;1170:800:22:o;2331:127::-;2392:10;2387:3;2383:20;2380:1;2373:31;2423:4;2420:1;2413:15;2447:4;2444:1;2437:15;2463:127;2524:10;2519:3;2515:20;2512:1;2505:31;2555:4;2552:1;2545:15;2579:4;2576:1;2569:15;2595:521;2672:4;2678:6;2738:11;2725:25;2832:2;2828:7;2817:8;2801:14;2797:29;2793:43;2773:18;2769:68;2759:96;;2851:1;2848;2841:12;2759:96;2878:33;;2930:20;;;-1:-1:-1;2973:18:22;2962:30;;2959:50;;;3005:1;3002;2995:12;2959:50;3038:4;3026:17;;-1:-1:-1;3069:14:22;3065:27;;;3055:38;;3052:58;;;3106:1;3103;3096:12;3052:58;2595:521;;;;;:::o;3121:271::-;3304:6;3296;3291:3;3278:33;3260:3;3330:16;;3355:13;;;3330:16;3121:271;-1:-1:-1;3121:271:22:o;3397:884::-;3477:6;3530:2;3518:9;3509:7;3505:23;3501:32;3498:52;;;3546:1;3543;3536:12;3498:52;3579:9;3573:16;3608:18;3649:2;3641:6;3638:14;3635:34;;;3665:1;3662;3655:12;3635:34;3703:6;3692:9;3688:22;3678:32;;3748:7;3741:4;3737:2;3733:13;3729:27;3719:55;;3770:1;3767;3760:12;3719:55;3799:2;3793:9;3821:2;3817;3814:10;3811:36;;;3827:18;;:::i;:::-;3902:2;3896:9;3870:2;3956:13;;-1:-1:-1;;3952:22:22;;;3976:2;3948:31;3944:40;3932:53;;;4000:18;;;4020:22;;;3997:46;3994:72;;;4046:18;;:::i;:::-;4086:10;4082:2;4075:22;4121:2;4113:6;4106:18;4161:7;4156:2;4151;4147;4143:11;4139:20;4136:33;4133:53;;;4182:1;4179;4172:12;4133:53;4195:55;4247:2;4242;4234:6;4230:15;4225:2;4221;4217:11;4195:55;:::i;:::-;4269:6;3397:884;-1:-1:-1;;;;;;;3397:884:22:o;4286:219::-;4435:2;4424:9;4417:21;4398:4;4455:44;4495:2;4484:9;4480:18;4472:6;4455:44;:::i;:::-;4447:52;4286:219;-1:-1:-1;;;4286:219:22:o;4510:232::-;4549:3;-1:-1:-1;;4570:17:22;;4567:140;;;4629:10;4624:3;4620:20;4617:1;4610:31;4664:4;4661:1;4654:15;4692:4;4689:1;4682:15;4567:140;-1:-1:-1;4734:1:22;4723:13;;4510:232::o"
                        },
                        "methodIdentifiers": {
                            "multicall(bytes[])": "ac9650d8"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"MultiCaller\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Enables calling multiple methods in a single call to the contract\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/MultiCaller.sol\":\"MultiCaller\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/MultiCaller.sol\":{\"keccak256\":\"0x31f18055b14fd9eeb459c6d6a88d1a60921bf3755031f6db4b709c3e01d078f7\",\"urls\":[\"bzz-raw://1a002084305bc747b23e69e24cfd1f3aa730adc22dd76d1e077dc72bcffc41f0\",\"dweb:/ipfs/Qmb611uGKzhc2MHkMhqW3NG49FY3Tg1udh7zXttmPtfU2s\"]}},\"version\":1}"
                }
            },
            "contracts/common/implementation/Testable.sol": {
                "Testable": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "getCurrentTime()": "29cb924d",
                            "setCurrentTime(uint256)": "22f8e566",
                            "timerAddress()": "1c39c38d"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"_timerAddress\":\"Contract that stores the current time in a testing environment. Must be set to 0x0 for production environments that use live time.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}}},\"title\":\"Base class that provides time overrides, but only if being run in test mode.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Constructs the Testable contract. Called by child contracts.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/Testable.sol\":\"Testable\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/Testable.sol\":{\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://537d694e3753596f507d071f283be9caeaad0010c444c9c9955d729affeb4907\",\"dweb:/ipfs/QmZ1WfVTBao11QaN6aygMhnt45UjRq77ZwfKPFmHiVSdaJ\"]},\"contracts/common/implementation/Timer.sol\":{\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://7ddac8d3cb76f8811156a11a7702d7c05b15a0f18c22b5abdc318723193f9266\",\"dweb:/ipfs/QmPxL7AU8NkURJaZ6WxXNcw88wGMSoPX4jbt7SMdPJqtYv\"]}},\"version\":1}"
                }
            },
            "contracts/common/implementation/Timer.sol": {
                "Timer": {
                    "abi": [
                        {
                            "inputs": [],
                            "stateMutability": "nonpayable",
                            "type": "constructor"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_3804": {
                                    "entryPoint": null,
                                    "id": 3804,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "608060405234801561001057600080fd5b504260005560ac806100236000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806322f8e56614603757806329cb924d146049575b600080fd5b60476042366004605e565b600055565b005b60005460405190815260200160405180910390f35b600060208284031215606f57600080fd5b503591905056fea2646970667358221220fe0c8618d3d802a2943a3ed1eddc35c979d6b8626530255562da35e0ed46bc7764736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP TIMESTAMP PUSH1 0x0 SSTORE PUSH1 0xAC DUP1 PUSH2 0x23 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 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x22F8E566 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH1 0x49 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x5E JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID 0xC DUP7 XOR 0xD3 0xD8 MUL LOG2 SWAP5 GASPRICE RETURNDATACOPY 0xD1 0xED 0xDC CALLDATALOAD 0xC9 PUSH26 0xD6B8626530255562DA35E0ED46BC7764736F6C63430008090033 ",
                            "sourceMap": "152:642:13:-:0;;;207:101;;;;;;;;;-1:-1:-1;245:15:13;231:11;:29;152:642;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@getCurrentTime_3824": {
                                    "entryPoint": null,
                                    "id": 3824,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@setCurrentTime_3815": {
                                    "entryPoint": null,
                                    "id": 3815,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 94,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:378:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "84:110:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "130:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "139:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "142:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "132:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "132:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "132:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "105:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "114:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "101:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "101:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "126:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "97:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "97:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "94:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "155:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "178:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "165:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "165:23:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "155:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "50:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "61:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "73:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:180:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "300:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "310:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "322:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "333:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "318:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "318:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "310:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "352:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "363:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "345:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "345:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "345:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "269:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "280:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "291:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "199:177:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\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": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c806322f8e56614603757806329cb924d146049575b600080fd5b60476042366004605e565b600055565b005b60005460405190815260200160405180910390f35b600060208284031215606f57600080fd5b503591905056fea2646970667358221220fe0c8618d3d802a2943a3ed1eddc35c979d6b8626530255562da35e0ed46bc7764736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x22F8E566 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH1 0x49 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x47 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x5E JUMP JUMPDEST PUSH1 0x0 SSTORE JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0x6F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 INVALID 0xC DUP7 XOR 0xD3 0xD8 MUL LOG2 SWAP5 GASPRICE RETURNDATACOPY 0xD1 0xED 0xDC CALLDATALOAD 0xC9 PUSH26 0xD6B8626530255562DA35E0ED46BC7764736F6C63430008090033 ",
                            "sourceMap": "152:642:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;475:82;;;;;;:::i;:::-;532:11;:18;475:82;;;701:91;748:7;774:11;701:91;;345:25:22;;;333:2;318:18;701:91:13;;;;;;;14:180:22;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:22;;14:180;-1:-1:-1;14:180:22:o"
                        },
                        "methodIdentifiers": {
                            "getCurrentTime()": "29cb924d",
                            "setCurrentTime(uint256)": "22f8e566"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint256 for the current Testable timestamp.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set `currentTime` to.\"}}},\"title\":\"Universal store of current contract time for testing environments.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getCurrentTime()\":{\"notice\":\"Gets the currentTime variable set in the Timer.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/common/implementation/Timer.sol\":\"Timer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/common/implementation/Timer.sol\":{\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://7ddac8d3cb76f8811156a11a7702d7c05b15a0f18c22b5abdc318723193f9266\",\"dweb:/ipfs/QmPxL7AU8NkURJaZ6WxXNcw88wGMSoPX4jbt7SMdPJqtYv\"]}},\"version\":1}"
                }
            },
            "contracts/insured-bridge/BridgePool.sol": {
                "BridgePool": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "string",
                                    "name": "_lpTokenName",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "_lpTokenSymbol",
                                    "type": "string"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_bridgeAdmin",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "_lpFeeRatePerSecond",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "_isWethPool",
                                    "type": "bool"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_timer",
                                    "type": "address"
                                }
                            ],
                            "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": false,
                                    "internalType": "address",
                                    "name": "oldAdmin",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "BridgePoolAdminTransferred",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "indexed": false,
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "indexed": false,
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relay",
                                    "type": "tuple"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes32",
                                    "name": "relayAncillaryDataHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "DepositRelayed",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "lpTokensMinted",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "liquidityProvider",
                                    "type": "address"
                                }
                            ],
                            "name": "LiquidityAdded",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "lpTokensBurnt",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "liquidityProvider",
                                    "type": "address"
                                }
                            ],
                            "name": "LiquidityRemoved",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "LpFeeRateSet",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "relayHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "disputer",
                                    "type": "address"
                                }
                            ],
                            "name": "RelayCanceled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "relayHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "disputer",
                                    "type": "address"
                                }
                            ],
                            "name": "RelayDisputed",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "caller",
                                    "type": "address"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "indexed": false,
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relay",
                                    "type": "tuple"
                                }
                            ],
                            "name": "RelaySettled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "instantRelayer",
                                    "type": "address"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "indexed": false,
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relay",
                                    "type": "tuple"
                                }
                            ],
                            "name": "RelaySpedUp",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "newRelaysEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "RelaysEnabledSet",
                            "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": "uint256",
                                    "name": "l1TokenAmount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "addLiquidity",
                            "outputs": [],
                            "stateMutability": "payable",
                            "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": "bonds",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "bridgeAdmin",
                            "outputs": [
                                {
                                    "internalType": "contract BridgeAdminInterface",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "changeAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "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": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relayData",
                                    "type": "tuple"
                                }
                            ],
                            "name": "disputeRelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "exchangeRateCurrent",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getAccumulatedFees",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "relayedAmount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "getLiquidityUtilization",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "utilizationCurrent",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "utilizationPostRelay",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relayData",
                                    "type": "tuple"
                                }
                            ],
                            "name": "getRelayAncillaryData",
                            "outputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "identifier",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "addedValue",
                                    "type": "uint256"
                                }
                            ],
                            "name": "increaseAllowance",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "instantRelays",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "isWethPool",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Token",
                            "outputs": [
                                {
                                    "internalType": "contract IERC20",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "lastLpFeeUpdate",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "liquidReserves",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "liquidityUtilizationCurrent",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "relayedAmount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "liquidityUtilizationPostRelay",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "lpFeeRatePerSecond",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "data",
                                    "type": "bytes[]"
                                }
                            ],
                            "name": "multicall",
                            "outputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "results",
                                    "type": "bytes[]"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "name",
                            "outputs": [
                                {
                                    "internalType": "string",
                                    "name": "",
                                    "type": "string"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "numberOfRelays",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "optimisticOracle",
                            "outputs": [
                                {
                                    "internalType": "contract SkinnyOptimisticOracleInterface",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "optimisticOracleLiveness",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "pendingReserves",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "proposerBondPct",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "realizedLpFeePct",
                                    "type": "uint64"
                                }
                            ],
                            "name": "relayAndSpeedUp",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "realizedLpFeePct",
                                    "type": "uint64"
                                }
                            ],
                            "name": "relayDeposit",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "relays",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "relaysEnabled",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "lpTokenAmount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "sendEth",
                                    "type": "bool"
                                }
                            ],
                            "name": "removeLiquidity",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "_newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setLpFeeRatePerSecond",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bool",
                                    "name": "_relaysEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "setRelaysEnabled",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relayData",
                                    "type": "tuple"
                                }
                            ],
                            "name": "settleRelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relayData",
                                    "type": "tuple"
                                }
                            ],
                            "name": "speedUpRelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "store",
                            "outputs": [
                                {
                                    "internalType": "contract StoreInterface",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "symbol",
                            "outputs": [
                                {
                                    "internalType": "string",
                                    "name": "",
                                    "type": "string"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "sync",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "syncUmaEcosystemParams",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "syncWithBridgeAdminParams",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "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": [],
                            "name": "undistributedLpFees",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "utilizedReserves",
                            "outputs": [
                                {
                                    "internalType": "int256",
                                    "name": "",
                                    "type": "int256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "stateMutability": "payable",
                            "type": "receive"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_3582": {
                                    "entryPoint": null,
                                    "id": 3582,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_3734": {
                                    "entryPoint": null,
                                    "id": 3734,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_4143": {
                                    "entryPoint": null,
                                    "id": 4143,
                                    "parameterSlots": 7,
                                    "returnSlots": 0
                                },
                                "@_44": {
                                    "entryPoint": null,
                                    "id": 44,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_postEntranceReset_3629": {
                                    "entryPoint": null,
                                    "id": 3629,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_3613": {
                                    "entryPoint": 1857,
                                    "id": 3613,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_3621": {
                                    "entryPoint": null,
                                    "id": 3621,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@getCurrentTime_3789": {
                                    "entryPoint": 514,
                                    "id": 3789,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@syncUmaEcosystemParams_5247": {
                                    "entryPoint": 679,
                                    "id": 5247,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@syncWithBridgeAdminParams_5272": {
                                    "entryPoint": 1325,
                                    "id": 5272,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 2329,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_string_fromMemory": {
                                    "entryPoint": 2180,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 2613,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32_fromMemory": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_addresst_uint64t_boolt_address_fromMemory": {
                                    "entryPoint": 2382,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 7
                                },
                                "abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory": {
                                    "entryPoint": 2650,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 2587,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint32_fromMemory": {
                                    "entryPoint": 2749,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64_fromMemory": {
                                    "entryPoint": 2719,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64_fromMemory": {
                                    "entryPoint": 2358,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_bbafc52390f55679de28d6789281f62ca2e8900a287d1789da1882ca242675c1__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "allocate_memory": {
                                    "entryPoint": 2129,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 2789,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 2107,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:5779:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "46:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "63:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "70:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "75:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "66:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "66:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "56:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "56:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "56:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "103:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "106:4:22",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "96:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "96:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "96:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "127:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "130:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "120:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "120:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "120:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "14:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "191:230:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "201:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "217:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "211:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "211:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "201:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "229:58:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "251:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "size",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "267:4:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "273:2:22",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "263:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "263:13:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "282:2:22",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "not",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "278:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "278:7:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "259:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "259:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "247:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "247:40:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "233:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "362:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "364:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "364:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "364:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "305:10:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "325:2:22",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "329:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "321:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "321:10:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "333:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "317:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "317:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "302:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "302:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "341:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "353:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "338:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "338:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "299:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "299:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "296:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "400:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "404:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "393:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "393:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "393:22:22"
                                                        }
                                                    ]
                                                },
                                                "name": "allocate_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "size",
                                                        "nodeType": "YulTypedName",
                                                        "src": "171:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "180:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "146:275:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "490:631:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "539:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "548:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "551:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "541:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "541:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "541:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "518:6:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "526:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "514:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "514:17:22"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "533:3:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "510:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "510:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "503:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "503:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "500:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "564:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "580:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "574:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "574:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "568:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "626:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "628:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "628:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "628:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "602:2:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "614:2:22",
                                                                                        "type": "",
                                                                                        "value": "64"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "618:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "610:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "610:10:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "622:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "606:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "606:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "599:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "599:26:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "596:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "657:14:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "667:4:22",
                                                                "type": "",
                                                                "value": "0x20"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "661:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "680:68:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "_1",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "723:2:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "727:4:22",
                                                                                                "type": "",
                                                                                                "value": "0x1f"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "719:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "719:13:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "738:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "734:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "734:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "715:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "715:27:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "744:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "711:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "711:36:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "695:15:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "695:53:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "array_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "684:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "array_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "764:7:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "773:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "757:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "757:19:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "757:19:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "822:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "831:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "834:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "824:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "824:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "824:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "799:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "807:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "795:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "795:15:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "812:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "791:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "791:24:22"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "817:3:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "788:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "788:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "785:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "847:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "856:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "851:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "912:88:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "array_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "941:7:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "950:1:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "937:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "937:15:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "_2",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "954:2:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "933:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "933:24:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "offset",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "973:6:22"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "981:1:22"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "969:3:22"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "969:14:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_2",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "985:2:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "965:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "965:23:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "959:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "959:30:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "926:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "926:64:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "926:64:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "877:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "880:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "874:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "874:9:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "884:19:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "886:15:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "895:1:22"
                                                                                },
                                                                                {
                                                                                    "name": "_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "898:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "891:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "891:10:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "886:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "870:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "866:134:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1030:60:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "array_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1059:7:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1068:2:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1055:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "1055:16:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "_2",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1073:2:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1051:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1051:25:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1078:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1044:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1044:36:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1044:36:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1015:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1018:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1012:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1012:9:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1009:81:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1099:16:22",
                                                            "value": {
                                                                "name": "array_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1108:7:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "array",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1099:5:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_string_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "464:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "472:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "array",
                                                        "nodeType": "YulTypedName",
                                                        "src": "480:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "426:695:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1186:117:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1196:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1211:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1205:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1205:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1196:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1281:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1290:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1293:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1283:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1283:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1283:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1240:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1251:5:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1266:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1271:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1262:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1262:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1275:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1258:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1258:19:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1247:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1247:31:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1237:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1237:42:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1230:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1230:50:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1227:70:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1165:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1176:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1126:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1367:116:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1377:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1392:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1386:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1386:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1377:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1461:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1470:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1473:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1463:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1463:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1463:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1421:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1432:5:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1447:2:22",
                                                                                                        "type": "",
                                                                                                        "value": "64"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1451:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1443:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1443:10:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1455:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1439:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1439:18:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1428:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1428:30:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1418:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1418:41:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1411:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1411:49:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1408:69:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1346:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1357:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1308:175:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1687:859:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1734:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1743:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1746:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1736:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1736:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1736:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1708:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1717:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1704:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1704:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1729:3:22",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1700:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1700:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1697:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1759:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1779:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1773:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1773:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1763:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1798:28:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1816:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1820:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1812:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1812:10:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1824:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1808:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1808:18:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1802:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1853:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1862:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1865:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1855:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1855:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1855:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1841:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1849:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1838:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1838:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1835:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1878:71:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1921:9:22"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1932:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1917:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1917:22:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1941:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_string_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1888:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1888:61:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1878:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1958:41:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1984:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1995:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1980:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1980:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1974:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1974:25:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1962:8:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2028:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2037:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2040:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2030:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2030:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2030:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2014:8:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2024:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2011:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2011:16:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2008:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2053:73:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2096:9:22"
                                                                            },
                                                                            {
                                                                                "name": "offset_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2107:8:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2092:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2092:24:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2118:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_string_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2063:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2063:63:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2053:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2135:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2179:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2190:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2175:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2175:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2145:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2145:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2135:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2203:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2247:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2258:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2243:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2243:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2213:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2213:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2203:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2271:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2314:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2325:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2310:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2310:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2281:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2281:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2271:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2339:39:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2362:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2373:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2358:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2358:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2352:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2352:26:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2343:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2431:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2440:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2443:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2433:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2433:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2433:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2400:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2421:5:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2414:6:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2414:13:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2407:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2407:21:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2397:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2397:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2390:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2390:40:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2387:60:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2456:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2466:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2456:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2480:60:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2524:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2535:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2520:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2520:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2490:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2490:50:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2480:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_addresst_uint64t_boolt_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1605:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1616:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1628:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1636:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1644:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1652:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1660:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1668:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1676:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1488:1058:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2725:177:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2742:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2753:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2735:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2735:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2735:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2776:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2787:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2772:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2772:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2792:2:22",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2765:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2765:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2765:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2815:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2826:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2811:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2811:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "426164204c5020746f6b656e206e616d65206f722073796d626f6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2831:29:22",
                                                                        "type": "",
                                                                        "value": "Bad LP token name or symbol"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2804:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2804:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2804:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2870:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2882:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2893:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2878:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2878:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2870:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_bbafc52390f55679de28d6789281f62ca2e8900a287d1789da1882ca242675c1__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2702:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2716:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2551:351:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3006:101:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3016:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3028:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3039:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3024:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3024:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3016:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3058:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3073:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3089:2:22",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3093:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3085:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3085:10:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3097:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3081:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3081:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3069:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3069:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3051:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3051:50:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3051:50:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2975:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2986:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2997:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2907:200:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3193:103:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3239:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3248:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3251:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3241:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3241:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3241:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3214:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3223:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3210:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3210:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3235:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3206:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3206:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3203:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3264:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3280:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3274:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3274:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3264:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3159:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3170:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3182:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3112:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3382:127:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3428:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3437:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3440:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3430:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3430:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3430:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3403:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3412:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3399:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3399:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3424:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3395:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3395:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3392:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3453:50:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3493:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3463:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3463:40:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3453:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3348:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3359:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3371:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3301:208:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3615:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3625:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3637:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3648:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3633:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3633:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3625:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3667:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3678:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3660:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3660:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3660:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3584:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3595:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3606:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3514:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3797:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3807:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3819:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3830:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3815:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3815:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3807:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3849:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3864:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3880:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3885:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3876:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3876:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3889:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3872:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3872:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3860:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3860:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3842:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3842:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3842:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3766:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3777:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3788:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3696:203:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4011:336:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4057:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4066:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4069:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4059:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4059:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4059:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4032:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4041:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4028:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4028:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4053:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4024:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4024:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4021:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4082:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4102:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4096:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4096:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4086:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4114:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4136:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4144:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4132:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4132:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4118:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4222:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4224:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4224:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4224:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4165:10:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4185:2:22",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4189:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "4181:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "4181:10:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4193:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4177:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4177:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4162:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4162:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4201:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4213:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4198:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4198:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4159:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4159:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4156:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4260:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4264:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4253:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4253:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4253:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4291:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4305:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4299:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4299:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4284:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4284:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4284:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4325:16:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4335:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4325:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3977:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3988:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4000:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3904:443:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4432:126:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4478:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4487:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4490:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4480:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4480:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4480:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4453:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4462:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4449:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4449:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4474:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4445:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4445:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4442:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4503:49:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4542:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4513:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4513:39:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4503:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4398:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4409:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4421:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4352:206:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4643:200:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4689:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4698:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4701:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4691:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4691:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4691:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4664:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4673:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4660:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4660:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4685:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4656:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4656:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4653:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4714:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4733:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4727:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4727:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4718:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4797:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4806:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4809:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4799:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4799:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4799:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4765:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4776:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4783:10:22",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4772:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4772:22:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4762:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4762:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4755:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4755:41:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4752:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4822:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4832:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4822:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4609:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4620:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4632:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4563:280:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4929:103:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4975:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4984:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4987:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4977:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4977:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4977:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4950:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4959:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4946:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4946:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4971:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4942:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4942:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4939:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5000:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5016:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5010:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5010:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5000:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4895:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4906:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4918:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4848:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5211:181:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5228:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5239:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5221:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5221:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5221:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5262:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5273:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5258:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5258:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5278:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5251:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5251:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5251:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5301:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5312:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5297:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5297:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5317:33:22",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5290:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5290:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5290:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5360:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5372:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5383:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5368:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5368:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5360:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5188:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5202:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5037:355:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5452:325:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5462:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5476:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5479:4:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5472:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5472:12:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5462:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5493:38:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5523:4:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5529:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5519:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5519:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5497:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5570:31:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "5572:27:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5586:6:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5594:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5582:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5582:17:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5572:6:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5550:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5543:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5543:26:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5540:61:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5660:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5681:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "5688:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "5693:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5684:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "5684:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5674:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5674:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5674:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5725:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5728:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5718:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5718:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5718:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5753:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5756:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5746:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5746:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5746:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5616:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5639:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5647:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5636:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5636:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5613:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5613:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5610:161:22"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5432:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5441:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5397:380:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        if gt(_1, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let _2 := 0x20\n        let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), _2))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), _2), end) { revert(0, 0) }\n        let i := 0\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), 0)\n        }\n        array := array_1\n    }\n    function abi_decode_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_uint64_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(64, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_addresst_uint64t_boolt_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n        value4 := abi_decode_uint64_fromMemory(add(headStart, 128))\n        let value := mload(add(headStart, 160))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value5 := value\n        value6 := abi_decode_address_fromMemory(add(headStart, 192))\n    }\n    function abi_encode_tuple_t_stringliteral_bbafc52390f55679de28d6789281f62ca2e8900a287d1789da1882ca242675c1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Bad LP token name or symbol\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 32)\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, mload(headStart))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint64_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint64_fromMemory(headStart)\n    }\n    function abi_decode_tuple_t_uint32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "6080604052600a805461ff0019166101001790553480156200002057600080fd5b50604051620056343803806200563483398101604081905262000043916200094e565b600080546001600160a01b0319166001600160a01b0383161790558651879087906200007790600490602085019062000795565b5080516200008d90600590602084019062000795565b50506006805460ff1916600117905550865115801590620000ae5750855115155b620001005760405162461bcd60e51b815260206004820152601b60248201527f426164204c5020746f6b656e206e616d65206f722073796d626f6c000000000060448201526064015b60405180910390fd5b600e80546001600160a01b0319166001600160a01b038781169190911790915560068054610100600160a81b031916610100928716929092029190911790556200014962000202565b600a805462010000600160701b0319166a010000000000000000000063ffffffff939093169290920262010000600160501b03191691909117620100006001600160401b038616021760ff1916831515179055620001a6620002a7565b620001b06200052d565b600a54604051620100009091046001600160401b031681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a59060200160405180910390a15050505050505062000b22565b600080546001600160a01b031615620002a25760008054906101000a90046001600160a01b03166001600160a01b03166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026257600080fd5b505afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d919062000a1b565b905090565b504290565b620002b162000741565b620002c16006805460ff19169055565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b1580156200030757600080fd5b505afa1580156200031c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000342919062000a35565b6040516302abf57960e61b81527f536b696e6e794f7074696d69737469634f7261636c650000000000000000000060048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b158015620003a557600080fd5b505afa158015620003ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e0919062000a35565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000478919062000a35565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b158015620004d857600080fd5b505afa158015620004ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000513919062000a5a565b51600b55506200052b6006805460ff19166001179055565b565b6200053762000741565b620005476006805460ff19169055565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156200059657600080fd5b505afa158015620005ab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005d1919062000a9f565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b1580156200064657600080fd5b505afa1580156200065b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000681919062000abd565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b158015620006f057600080fd5b505afa15801562000705573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072b919062000a1b565b6011556200052b6006805460ff19166001179055565b60065460ff166200052b5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401620000f7565b828054620007a39062000ae5565b90600052602060002090601f016020900481019282620007c7576000855562000812565b82601f10620007e257805160ff191683800117855562000812565b8280016001018555821562000812579182015b8281111562000812578251825591602001919060010190620007f5565b506200082092915062000824565b5090565b5b8082111562000820576000815560010162000825565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200087c576200087c6200083b565b604052919050565b600082601f8301126200089657600080fd5b81516001600160401b03811115620008b257620008b26200083b565b6020620008c8601f8301601f1916820162000851565b8281528582848701011115620008dd57600080fd5b60005b83811015620008fd578581018301518282018401528201620008e0565b838111156200090f5760008385840101525b5095945050505050565b80516001600160a01b03811681146200093157600080fd5b919050565b80516001600160401b03811681146200093157600080fd5b600080600080600080600060e0888a0312156200096a57600080fd5b87516001600160401b03808211156200098257600080fd5b620009908b838c0162000884565b985060208a0151915080821115620009a757600080fd5b50620009b68a828b0162000884565b965050620009c76040890162000919565b9450620009d76060890162000919565b9350620009e76080890162000936565b925060a08801518015158114620009fd57600080fd5b915062000a0d60c0890162000919565b905092959891949750929550565b60006020828403121562000a2e57600080fd5b5051919050565b60006020828403121562000a4857600080fd5b62000a538262000919565b9392505050565b60006020828403121562000a6d57600080fd5b604051602081016001600160401b038111828210171562000a925762000a926200083b565b6040529151825250919050565b60006020828403121562000ab257600080fd5b62000a538262000936565b60006020828403121562000ad057600080fd5b815163ffffffff8116811462000a5357600080fd5b600181811c9082168062000afa57607f821691505b6020821081141562000b1c57634e487b7160e01b600052602260045260246000fd5b50919050565b614b028062000b326000396000f3fe60806040526004361061031e5760003560e01c806370a08231116101ab578063b5351ee2116100f7578063cefed55f11610095578063df738fc81161006f578063df738fc81461097a578063ed4de3a3146109a7578063f1d24bab146109dc578063fff6cae914610a0057600080fd5b8063cefed55f146108f0578063d412f5a414610910578063dd62ed3e1461093457600080fd5b8063bec73ade116100d1578063bec73ade1461086a578063c01e1bd61461088a578063c73a32c3146108af578063cc2c929e146108d657600080fd5b8063b5351ee214610821578063bd6d894d14610836578063be0ba1221461084b57600080fd5b8063975057e711610164578063a9059cbb1161013e578063a9059cbb14610795578063ac9650d8146107b5578063b2084202146107d5578063b454e326146107eb57600080fd5b8063975057e714610735578063a457c2d714610755578063a6af2dfe1461077557600080fd5b806370a082311461067e578063753b91bb146106b45780637998a1c4146106d457806387a515d3146106ea5780638f2839701461070057806395d89b411461072057600080fd5b806323b872dd1161026a5780633fa856c91161022357806351c6590a116101fd57806351c6590a146106205780635df45a371461063357806362822d341461064857806366db52401461066857600080fd5b80633fa856c9146105ca5780634464fae4146105ea5780634f52fd171461060057600080fd5b806323b872dd1461052457806327f224ca1461054457806329cb924d14610564578063313ce5671461057957806339509351146105955780633cc400b3146105b557600080fd5b8063173684c5116102d75780631bf71c38116102b15780631bf71c381461048c5780631c39c38d146104ac57806322302922146104e457806322f8e5661461050457600080fd5b8063173684c51461042957806318160ddd1461046257806319e9d8941461047757600080fd5b806306fdde031461032a57806308ed5b1414610355578063095ea7b31461037757806311cfc159146103a757806313111725146103e5578063135c404e1461040557600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a15565b60405161034c9190613e7f565b60405180910390f35b34801561036157600080fd5b50610375610370366004613ea0565b610aa7565b005b34801561038357600080fd5b50610397610392366004613edd565b610b46565b604051901515815260200161034c565b3480156103b357600080fd5b50600a546103cd906201000090046001600160401b031681565b6040516001600160401b03909116815260200161034c565b3480156103f157600080fd5b50610375610400366004614042565b610b5d565b34801561041157600080fd5b5061041b600d5481565b60405190815260200161034c565b34801561043557600080fd5b50600a5461044d90600160b01b900463ffffffff1681565b60405163ffffffff909116815260200161034c565b34801561046e57600080fd5b5060035461041b565b34801561048357600080fd5b5061041b610e9e565b34801561049857600080fd5b5061033f6104a736600461407c565b610ec7565b3480156104b857600080fd5b506000546104cc906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156104f057600080fd5b506010546104cc906001600160a01b031681565b34801561051057600080fd5b5061037561051f366004614133565b610eea565b34801561053057600080fd5b5061039761053f36600461414c565b610f60565b34801561055057600080fd5b5061037561055f36600461418d565b611011565b34801561057057600080fd5b5061041b6110a7565b34801561058557600080fd5b506040516012815260200161034c565b3480156105a157600080fd5b506103976105b0366004613edd565b611147565b3480156105c157600080fd5b5061037561117e565b3480156105d657600080fd5b506103756105e536600461407c565b611373565b3480156105f657600080fd5b5061041b600c5481565b34801561060c57600080fd5b5061037561061b3660046141aa565b6117de565b61037561062e366004614133565b611957565b34801561063f57600080fd5b5061041b611afb565b34801561065457600080fd5b5061041b610663366004614133565b611b0d565b34801561067457600080fd5b5061041b60085481565b34801561068a57600080fd5b5061041b6106993660046141cf565b6001600160a01b031660009081526001602052604090205490565b3480156106c057600080fd5b506103756106cf366004614042565b611b37565b3480156106e057600080fd5b5061041b60115481565b3480156106f657600080fd5b5061041b60095481565b34801561070c57600080fd5b5061037561071b3660046141cf565b611fda565b34801561072c57600080fd5b5061033f612069565b34801561074157600080fd5b50600f546104cc906001600160a01b031681565b34801561076157600080fd5b50610397610770366004613edd565b612078565b34801561078157600080fd5b50600e546104cc906001600160a01b031681565b3480156107a157600080fd5b506103976107b0366004613edd565b612113565b6107c86107c33660046141ec565b612120565b60405161034c9190614260565b3480156107e157600080fd5b5061041b60075481565b3480156107f757600080fd5b506104cc610806366004614133565b6013602052600090815260409020546001600160a01b031681565b34801561082d57600080fd5b506103756122c5565b34801561084257600080fd5b5061041b61251d565b34801561085757600080fd5b50600a5461039790610100900460ff1681565b34801561087657600080fd5b5061037561088536600461407c565b612537565b34801561089657600080fd5b506006546104cc9061010090046001600160a01b031681565b3480156108bb57600080fd5b50600a546103cd90600160701b90046001600160401b031681565b3480156108e257600080fd5b50600a546103979060ff1681565b3480156108fc57600080fd5b5061037561090b36600461407c565b61272b565b34801561091c57600080fd5b5060065461044d90600160a81b900463ffffffff1681565b34801561094057600080fd5b5061041b61094f3660046142c2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561098657600080fd5b5061041b610995366004614133565b60126020526000908152604090205481565b3480156109b357600080fd5b506109c76109c2366004614133565b612918565b6040805192835260208301919091520161034c565b3480156109e857600080fd5b50600a5461044d90600160501b900463ffffffff1681565b348015610a0c57600080fd5b5061037561294f565b606060048054610a24906142f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a50906142f0565b8015610a9d5780601f10610a7257610100808354040283529160200191610a9d565b820191906000526020600020905b815481529060010190602001808311610a8057829003601f168201915b5050505050905090565b600e546001600160a01b03163314610ada5760405162461bcd60e51b8152600401610ad19061432b565b60405180910390fd5b610ae261296f565b610aea6129c1565b600a80548215156101000261ff00199091161790556040517f1d492b98217ff50d005c548e0fa3a96dc38b2bafccaf5baedf42c112bd39fdfb90610b3390831515815260200190565b60405180910390a1610b436129cd565b50565b6000610b533384846129dc565b5060015b92915050565b600a54610100900460ff16610baa5760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610ad1565b610bb261296f565b610bba6129c1565b6703782dace9d900008260a001516001600160401b031611158015610bf457506703782dace9d900008260c001516001600160401b031611155b8015610c1157506706f05b59d3b20000816001600160401b031611155b610c4c5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ad1565b6000610c5783612b01565b60008181526012602052604090205490915015610cad5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610ad1565b6000610cb76110a7565b90506000610cc88560800151612b44565b905060006040518060e0016040528060016002811115610cea57610cea614362565b815233602082015260068054604090920191600160a81b900463ffffffff16906015610d158361438e565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018463ffffffff168152602001838152602001600b548152509050610d7081612b64565b600085815260126020526040812091909155610d8c8783612b77565b90508660800151600954600754610da391906143b2565b1015610ded5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610ad1565b6000600b5484610dfd91906143c9565b9050876080015160096000828254610e1591906143c9565b9250508190555080600d6000828254610e2e91906143c9565b9091555050600654610e509061010090046001600160a01b0316333084612bcb565b857fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be0898585604051610e84939291906144eb565b60405180910390a2505050505050610e9a6129cd565b5050565b6000610ea861296f565b610eb06129c1565b610eba6000612c3c565b9050610ec46129cd565b90565b6060610ed161296f565b610ee3610ede8484612b77565b612cca565b9392505050565b6000546001600160a01b0316610eff57600080fd5b60005460405163117c72b360e11b8152600481018390526001600160a01b03909116906322f8e56690602401600060405180830381600087803b158015610f4557600080fd5b505af1158015610f59573d6000803e3d6000fd5b5050505050565b6000610f6d848484612d07565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610ff25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad1565b611006853361100186856143b2565b6129dc565b506001949350505050565b600e546001600160a01b0316331461103b5760405162461bcd60e51b8152600401610ad19061432b565b61104361296f565b61104b6129c1565b600a805469ffffffffffffffff00001916620100006001600160401b038481168202929092179283905560405192041681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a590602001610b33565b600080546001600160a01b0316156111425760008054906101000a90046001600160a01b03166001600160a01b03166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190614517565b905090565b504290565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b539185906110019086906143c9565b61118661296f565b61118e6129c1565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156111dc57600080fd5b505afa1580156111f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112149190614530565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b15801561128857600080fd5b505afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c0919061454d565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b15801561132e57600080fd5b505afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190614517565b6011556113716129cd565b565b61137b61296f565b6113836129c1565b600061138e83612b01565b905061139a8183612edf565b6001825160028111156113af576113af614362565b146113ee5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cd95d1d1b1959608a1b6044820152606401610ad1565b6000600a60169054906101000a900463ffffffff168360800151611412919061456a565b905061141c6110a7565b8163ffffffff1611156114665760405162461bcd60e51b8152602060048201526012602482015271139bdd081cd95d1d1b1958589b19481e595d60721b6044820152606401610ad1565b82602001516001600160a01b0316336001600160a01b031614806114a157506114918161038461456a565b63ffffffff1661149f6110a7565b115b6114e05760405162461bcd60e51b815260206004820152601060248201526f2737ba1039b637bb903932b630bcb2b960811b6044820152606401610ad1565b6040805160e0810190915261155490806002815260200185602001516001600160a01b03168152602001856040015163ffffffff16815260200185606001516001600160401b03168152602001856080015163ffffffff1681526020018560a0015181526020018560c00151815250612b64565b60008381526012602052604081209190915560a085015160608501516115879161157d91614592565b8660800151612f6c565b856080015161159691906143b2565b905060006115a48486612f94565b600081815260136020526040902054600a549192506001600160a01b03169060ff1680156115d957506001600160a01b038116155b156115f1576115ec876040015184612fbf565b611626565b6116266001600160a01b03821661160c57876040015161160e565b815b60065461010090046001600160a01b03169085613088565b600061163a8860a001518960800151612f6c565b905060008760a001518860c0015161165291906143c9565b60208901519091506001600160a01b031633141561169a5760208801516116959061167d83856143c9565b60065461010090046001600160a01b03169190613088565b6116d8565b60208801516006546116bc916101009091046001600160a01b03169083613088565b6006546116d89061010090046001600160a01b03163384613088565b60006116e483876143c9565b90508960800151600960008282546116fc91906143b2565b92505081905550806007600082825461171591906143b2565b92505081905550806008600082825461172e91906145b4565b9250508190555081600d600082825461174791906143b2565b9091555061175590506130b8565b61176f61176a8a606001518c60800151612f6c565b6130ff565b336001600160a01b0316887fcfdda74fce9fedb259e0f0a1ab1550e19b338488ece64976a4639e7fce0293a78b6040516117a991906145f5565b60405180910390a350505060009182525060136020526040902080546001600160a01b031916905550610e9a91506129cd9050565b6117e661296f565b6117ee6129c1565b8015806117fd5750600a5460ff165b6118395760405162461bcd60e51b815260206004820152600d60248201526c086c2dce840e6cadcc840cae8d609b1b6044820152606401610ad1565b6000670de0b6b3a764000061184c613132565b6118569085614603565b6118609190614638565b90508060095461187091906143c9565b60075410156118c15760405162461bcd60e51b815260206004820152601e60248201527f5574696c697a6174696f6e20746f6f206869676820746f2072656d6f766500006044820152606401610ad1565b6118cb33846131aa565b80600760008282546118dd91906143b2565b909155505081156118f7576118f23382612fbf565b611913565b6006546119139061010090046001600160a01b03163383613088565b604080518281526020810185905233917f0c54fc223ffd1a8f36652b5e83db4fff50f5ae151b11ceb56d5499b9f6e1fa18910160405180910390a250610e9a6129cd565b61195f61296f565b6119676129c1565b600a5460ff16801561197857508034145b80611981575034155b6119cd5760405162461bcd60e51b815260206004820152601b60248201527f42616420616464206c6971756964697479204574682076616c756500000000006044820152606401610ad1565b60006119d7613132565b6119e983670de0b6b3a7640000614603565b6119f39190614638565b90506119ff33826132f9565b8160076000828254611a1191906143c9565b90915550503415801590611a275750600a5460ff165b15611a9a57600660019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a7c57600080fd5b505af1158015611a90573d6000803e3d6000fd5b5050505050611ab7565b600654611ab79061010090046001600160a01b0316333085612bcb565b604080518381526020810183905233917f0351f600ef1e31e5e13b4dc27bff4cbde3e9269f0ffc666629ae6cac573eb220910160405180910390a250610b436129cd565b6000611b0561296f565b61113d6133d8565b6000611b1761296f565b611b1f6129c1565b611b2882612c3c565b9050611b326129cd565b919050565b600a54610100900460ff16611b845760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610ad1565b611b8c61296f565b611b946129c1565b6000611b9e6110a7565b90506703782dace9d900008360a001516001600160401b031611158015611bda57506703782dace9d900008360c001516001600160401b031611155b8015611bf757506706f05b59d3b20000826001600160401b031611155b611c325760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ad1565b6000611c3d84612b01565b60008181526012602052604090205490915015611c935760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610ad1565b6000611ca28560800151612b44565b905060006040518060e0016040528060016002811115611cc457611cc4614362565b815233602082015260068054604090920191600160a81b900463ffffffff16906015611cef8361438e565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018563ffffffff168152602001838152602001600b5481525090506000611d4d8783612b77565b9050611d5882612b64565b600085815260126020526040812091909155611d748584612f94565b6000818152601360205260409020549091506001600160a01b031615611dd65760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610ad1565b8760800151600954600754611deb91906143b2565b1015611e355760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610ad1565b6000600b5485611e4591906143c9565b90506000611e798a60c001518b60a001518760600151611e659190614592565b611e6f9190614592565b8b60800151612f6c565b90506000818b60800151611e8d91906143b2565b905082600d6000828254611ea191906143c9565b909155505060808b015160098054600090611ebd9084906143c9565b9091555050600084815260136020526040902080546001600160a01b03191633908117909155611f0b9030611ef286856143c9565b60065461010090046001600160a01b0316929190612bcb565b600a5460ff1615611f2957611f248b6040015182612fbf565b611f4b565b60408b0151600654611f4b916101009091046001600160a01b03169083613088565b877fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be08c8888604051611f7f939291906144eb565b60405180910390a2336001600160a01b0316887ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b88604051611fc191906145f5565b60405180910390a3505050505050505050610e9a6129cd565b600e546001600160a01b031633146120045760405162461bcd60e51b8152600401610ad19061432b565b61200c61296f565b6120146129c1565b600e80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f485a12424bd0c2c66a131c2681cb6c743b9573af3ae5f3014ef6ce7f55ab01929101610b33565b606060058054610a24906142f0565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156120fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad1565b612109338561100186856143b2565b5060019392505050565b6000610b53338484612d07565b606034156121705760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c756500000000006044820152606401610ad1565b816001600160401b0381111561218857612188613f09565b6040519080825280602002602001820160405280156121bb57816020015b60608152602001906001900390816121a65790505b50905060005b828110156122be57600080308686858181106121df576121df61465a565b90506020028101906121f19190614670565b6040516121ff9291906146bd565b600060405180830381855af49150503d806000811461223a576040519150601f19603f3d011682016040523d82523d6000602084013e61223f565b606091505b50915091508161228b5760448151101561225857600080fd5b6004810190508080602001905181019061227291906146cd565b60405162461bcd60e51b8152600401610ad19190613e7f565b8084848151811061229e5761229e61465a565b6020026020010181905250505080806122b69061476e565b9150506121c1565b5092915050565b6122cd61296f565b6122d56129c1565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b15801561231a57600080fd5b505afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190614789565b6040516302abf57960e61b815275536b696e6e794f7074696d69737469634f7261636c6560501b60048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156123ad57600080fd5b505afa1580156123c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e59190614789565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b15801561244157600080fd5b505afa158015612455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124799190614789565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b1580156124d857600080fd5b505afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251091906147a6565b51600b55506113716129cd565b600061252761296f565b61252f6129c1565b610eba613132565b61253f61296f565b6125476129c1565b600061255283612b01565b905061255e8183612edf565b600061256a8284612f94565b9050600a60169054906101000a900463ffffffff16836080015161258e919061456a565b63ffffffff1661259c6110a7565b1080156125bb57506001835160028111156125b9576125b9614362565b145b80156125dc57506000818152601360205260409020546001600160a01b0316155b6126225760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610ad1565b600081815260136020526040812080546001600160a01b0319163317905560c085015160a08601516060860151612667929161265d91614592565b61157d9190614592565b9050600081866080015161267b91906143b2565b600a5490915060ff16156126b9576006546126a69061010090046001600160a01b0316333084612bcb565b6126b4866040015182612fbf565b6126dd565b60408601516006546126dd916101009091046001600160a01b031690339084612bcb565b336001600160a01b0316847ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b8760405161271791906145f5565b60405180910390a350505050610e9a6129cd565b61273361296f565b61273b6129c1565b6127436110a7565b600a54608083015161276291600160b01b900463ffffffff169061456a565b63ffffffff16116127a55760405162461bcd60e51b815260206004820152600d60248201526c50617374206c6976656e65737360981b6044820152606401610ad1565b6001815160028111156127ba576127ba614362565b146127f85760405162461bcd60e51b815260206004820152600e60248201526d4e6f742064697370757461626c6560901b6044820152606401610ad1565b600061280383612b01565b905061280f8183612edf565b600061281b8484612b77565b905060006128408460200151338660a001518760c0015161283b87612cca565b61344f565b90508360a001518460c0015161285691906143c9565b600d600082825461286791906143b2565b90915550506080850151600980546000906128839084906143b2565b909155505060008381526012602052604081205580156128d757336128a785612b64565b60405185907f29751133c2d0a0ea7a9da312248b12ef10ac4c20f4e3ab5eebbb80d853b3836790600090a461290d565b336128e185612b64565b60405185907f14173c4d3bd95e34f5c8f78729323444c9272bd21051e70045b64ed48f65818390600090a45b505050610e9a6129cd565b60008061292361296f565b61292b6129c1565b6129356000612c3c565b61293e84612c3c565b9150915061294a6129cd565b915091565b61295761296f565b61295f6129c1565b61296761378c565b6113716129cd565b60065460ff166113715760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad1565b6006805460ff19169055565b6006805460ff19166001179055565b6001600160a01b038316612a3e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad1565b6001600160a01b038216612a9f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654604051600091612b2791849161010090046001600160a01b0316906020016147e7565b604051602081830303815290604052805190602001209050919050565b600a54600090610b5790600160701b90046001600160401b031683612f6c565b600081604051602001612b2791906145f5565b60008282604001518360600151600660019054906101000a90046001600160a01b0316604051602001612bad949392919061480f565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612c369085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261384f565b50505050565b6000612c4661378c565b60008060085413612c58576000612c5c565b6008545b905060008160095485612c6f91906143c9565b612c7991906143c9565b9050600082600754612c8b91906143c9565b905080612ca45750670de0b6b3a7640000949350505050565b80612cb783670de0b6b3a7640000614603565b612cc19190614638565b95945050505050565b6060610b5760405180602001604052806000815250604051806040016040528060098152602001680e4cad8c2f290c2e6d60bb1b81525084613921565b6001600160a01b038316612d6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad1565b6001600160a01b038216612dcd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad1565b6001600160a01b03831660009081526001602052604090205481811015612e455760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad1565b612e4f82826143b2565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290612e859084906143c9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed191815260200190565b60405180910390a350505050565b612ee881612b64565b60008381526012602052604090205414610e9a576040805162461bcd60e51b81526020600482015260248101919091527f4861736865642072656c617920706172616d7320646f206e6f74206d6174636860448201527f206578697374696e672072656c6179206861736820666f72206465706f7369746064820152608401610ad1565b6000670de0b6b3a7640000612f8a836001600160401b038616614603565b610ee39190614638565b6000828260600151604051602001612bad9291909182526001600160401b0316602082015260400190565b6001600160a01b0382163b15612feb57600654610e9a9061010090046001600160a01b03168383613088565b600654604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561303557600080fd5b505af1158015613049573d6000803e3d6000fd5b50506040516001600160a01b038516925083156108fc02915083906000818181858888f19350505050158015613083573d6000803e3d6000fd5b505050565b6040516001600160a01b03831660248201526044810182905261308390849063a9059cbb60e01b90606401612bff565b60006130c26133d8565b905080600c546130d291906143b2565b600c556130dd6110a7565b600a806101000a81548163ffffffff021916908363ffffffff16021790555050565b80600c600082825461311191906143c9565b92505081905550806008600082825461312a91906145b4565b909155505050565b600061313d60035490565b61314e5750670de0b6b3a764000090565b6131566130b8565b61315e61378c565b6000600c5460085460075461317391906145b4565b61317d9190614854565b905061318860035490565b61319a82670de0b6b3a7640000614603565b6131a49190614638565b91505090565b6001600160a01b03821661320a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ad1565b6001600160a01b0382166000908152600160205260409020548181101561327e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ad1565b61328882826143b2565b6001600160a01b038416600090815260016020526040812091909155600380548492906132b69084906143b2565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612af4565b6001600160a01b03821661334f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ad1565b806003600082825461336191906143c9565b90915550506001600160a01b0382166000908152600160205260408120805483929061338e9084906143c9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600a546000908190670de0b6b3a764000090600160501b900463ffffffff166133ff6110a7565b61340991906143b2565b600a54600c54613428916201000090046001600160401b031690614603565b6134329190614603565b61343c9190614638565b9050600c548110611b3257600c546131a4565b60008061345c85856143c9565b6010546006549192506134819161010090046001600160a01b03908116911683613967565b6010546011546001600160a01b039091169063af355d1e906134a16110a7565b86600660019054906101000a90046001600160a01b031660008b600a60169054906101000a900463ffffffff168f670de0b6b3a76400006040518a63ffffffff1660e01b81526004016134fc99989796959493929190614893565b602060405180830381600087803b15801561351657600080fd5b505af1925050508015613546575060408051601f3d908101601f1916820190925261354391810190614517565b60015b613593576006546135669061010090046001600160a01b03168883613088565b601054600654613589916001600160a01b03610100909204821691166000613967565b6000915050612cc1565b818110156135ee5760006135a782846143b2565b6006549091506135c69061010090046001600160a01b03168a83613088565b6010546006546135e9916001600160a01b03610100909204821691166000613967565b819250505b5060408051610160810182526001600160a01b03898116825260006020830181905260065461010090049091169282019290925260608101829052670de0b6b3a7640000608082015260a08101829052600a5460c0820190600160b01b900463ffffffff1661365b6110a7565b61366591906143c9565b81526000602082015260400161367b88856143b2565b815260208101889052600a54600160b01b900463ffffffff9081166040909201919091526006549192506136c49161010090046001600160a01b031690339030908690612bcb16565b6010546006546136e6916001600160a01b036101009092048216911684613967565b6010546011546001600160a01b0390911690639ce320c8906137066110a7565b87858c306040518763ffffffff1660e01b815260040161372b969594939291906148fe565b602060405180830381600087803b15801561374557600080fd5b505af1158015613759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377d9190614517565b50600198975050505050505050565b600d546006546040516370a0823160e01b81523060048201526000929161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156137d957600080fd5b505afa1580156137ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138119190614517565b61381b91906143b2565b9050600754811115610b435760075461383490826143b2565b600860008282546138459190614854565b9091555050600755565b60006138a4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a8b9092919063ffffffff16565b80519091501561308357808060200190518101906138c291906149f7565b6130835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ad1565b6060600061392f8585613aa2565b9050848161393c85613ae4565b60405160200161394e93929190614a14565b6040516020818303038152906040529150509392505050565b8015806139f05750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156139b657600080fd5b505afa1580156139ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ee9190614517565b155b613a5b5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610ad1565b6040516001600160a01b03831660248201526044810182905261308390849063095ea7b360e01b90606401612bff565b6060613a9a8484600085613b24565b949350505050565b815160609015613ad35781604051602001613abd9190614a57565b6040516020818303038152906040529050610b57565b81604051602001613abd9190614a8b565b6060613af3608083901c613c4c565b613afc83613c4c565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b606082471015613b855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ad1565b843b613bd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ad1565b600080866001600160a01b03168587604051613bef9190614ab0565b60006040518083038185875af1925050503d8060008114613c2c576040519150601f19603f3d011682016040523d82523d6000602084013e613c31565b606091505b5091509150613c41828286613dee565b979650505050505050565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f08080808080808080808080808080808080808080808080808080808080808081681613d7057613d70614622565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b60608315613dfd575081610ee3565b825115613e0d5782518084602001fd5b8160405162461bcd60e51b8152600401610ad19190613e7f565b60005b83811015613e42578181015183820152602001613e2a565b83811115612c365750506000910152565b60008151808452613e6b816020860160208601613e27565b601f01601f19169290920160200192915050565b602081526000610ee36020830184613e53565b8015158114610b4357600080fd5b600060208284031215613eb257600080fd5b8135610ee381613e92565b6001600160a01b0381168114610b4357600080fd5b8035611b3281613ebd565b60008060408385031215613ef057600080fd5b8235613efb81613ebd565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613f4157613f41613f09565b60405290565b6001600160401b0381168114610b4357600080fd5b8035611b3281613f47565b63ffffffff81168114610b4357600080fd5b8035611b3281613f67565b6000610100808385031215613f9857600080fd5b604051908101906001600160401b0382118183101715613fba57613fba613f09565b816040528092508335815260208401359150613fd582613f47565b816020820152613fe760408501613ed2565b6040820152613ff860608501613ed2565b60608201526080840135608082015261401360a08501613f5c565b60a082015261402460c08501613f5c565b60c082015261403560e08501613f79565b60e0820152505092915050565b600080610120838503121561405657600080fd5b6140608484613f84565b915061010083013561407181613f47565b809150509250929050565b6000808284036101e081121561409157600080fd5b61409b8585613f84565b925060e060ff19820112156140af57600080fd5b506140b8613f1f565b610100840135600381106140cb57600080fd5b81526140da6101208501613ed2565b60208201526140ec6101408501613f79565b60408201526140fe6101608501613f5c565b60608201526141106101808501613f79565b60808201526101a084013560a08201526101c09093013560c08401525092909150565b60006020828403121561414557600080fd5b5035919050565b60008060006060848603121561416157600080fd5b833561416c81613ebd565b9250602084013561417c81613ebd565b929592945050506040919091013590565b60006020828403121561419f57600080fd5b8135610ee381613f47565b600080604083850312156141bd57600080fd5b82359150602083013561407181613e92565b6000602082840312156141e157600080fd5b8135610ee381613ebd565b600080602083850312156141ff57600080fd5b82356001600160401b038082111561421657600080fd5b818501915085601f83011261422a57600080fd5b81358181111561423957600080fd5b8660208260051b850101111561424e57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156142b557603f198886030184526142a3858351613e53565b94509285019290850190600101614287565b5092979650505050505050565b600080604083850312156142d557600080fd5b82356142e081613ebd565b9150602083013561407181613ebd565b600181811c9082168061430457607f821691505b6020821081141561432557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43616c6c6572206e6f74206272696467652061646d696e000000000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156143a8576143a8614378565b6001019392505050565b6000828210156143c4576143c4614378565b500390565b600082198211156143dc576143dc614378565b500190565b8051825260208101516001600160401b0380821660208501526040830151915060018060a01b03808316604086015280606085015116606086015250608083015160808501528060a08401511660a08501528060c08401511660c0850152505063ffffffff60e08201511660e08301525050565b80516003811061447557634e487b7160e01b600052602160045260246000fd5b82526020818101516001600160a01b031690830152604080820151906144a29084018263ffffffff169052565b5060608101516144bd60608401826001600160401b03169052565b5060808101516144d5608084018263ffffffff169052565b5060a0818101519083015260c090810151910152565b61020081016144fa82866143e1565b614508610100830185614455565b826101e0830152949350505050565b60006020828403121561452957600080fd5b5051919050565b60006020828403121561454257600080fd5b8151610ee381613f47565b60006020828403121561455f57600080fd5b8151610ee381613f67565b600063ffffffff80831681851680830382111561458957614589614378565b01949350505050565b60006001600160401b0380831681851680830382111561458957614589614378565b600080821280156001600160ff1b03849003851316156145d6576145d6614378565b600160ff1b83900384128116156145ef576145ef614378565b50500190565b60e08101610b578284614455565b600081600019048311821515161561461d5761461d614378565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261465557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261468757600080fd5b8301803591506001600160401b038211156146a157600080fd5b6020019150368190038213156146b657600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156146df57600080fd5b81516001600160401b03808211156146f657600080fd5b818401915084601f83011261470a57600080fd5b81518181111561471c5761471c613f09565b604051601f8201601f19908116603f0116810190838211818310171561474457614744613f09565b8160405282815287602084870101111561475d57600080fd5b613c41836020830160208801613e27565b600060001982141561478257614782614378565b5060010190565b60006020828403121561479b57600080fd5b8151610ee381613ebd565b6000602082840312156147b857600080fd5b604051602081018181106001600160401b03821117156147da576147da613f09565b6040529151825250919050565b61012081016147f682856143e1565b6001600160a01b03929092166101009190910152919050565b610160810161481e82876143e1565b63ffffffff949094166101008201526001600160401b03929092166101208301526001600160a01b031661014090910152919050565b60008083128015600160ff1b85018412161561487257614872614378565b6001600160ff1b038401831381161561488d5761488d614378565b50500390565b60006101208b835263ffffffff808c1660208501528160408501526148ba8285018c613e53565b6001600160a01b039a8b166060860152608085019990995260a084019790975250509290931660c083015290931660e0840152610100909201919091529392505050565b600061020088835263ffffffff8816602084015280604084015261492481840188613e53565b91505061493d6060830186516001600160a01b03169052565b60208501516001600160a01b03811660808401525060408501516001600160a01b03811660a084015250606085015180151560c084015250608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015161016087015281890151610180870152808901516101a0870152505050506149e26101c08301856001600160a01b03169052565b6001600160a01b0383166101e0830152613c41565b600060208284031215614a0957600080fd5b8151610ee381613e92565b60008451614a26818460208901613e27565b845190830190614a3a818360208901613e27565b8451910190614a4d818360208801613e27565b0195945050505050565b600b60fa1b815260008251614a73816001850160208701613e27565b601d60f91b6001939091019283015250600201919050565b60008251614a9d818460208701613e27565b601d60f91b920191825250600101919050565b60008251614ac2818460208701613e27565b919091019291505056fea26469706673582212204714f4b2be10563baa241274ea1a6efe24cdfb5845d64a1fdefb484a5895776d64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5634 CODESIZE SUB DUP1 PUSH3 0x5634 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x43 SWAP2 PUSH3 0x94E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE DUP7 MLOAD DUP8 SWAP1 DUP8 SWAP1 PUSH3 0x77 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x795 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x8D SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x795 JUMP JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE POP DUP7 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH3 0xAE JUMPI POP DUP6 MLOAD ISZERO ISZERO JUMPDEST PUSH3 0x100 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426164204C5020746F6B656E206E616D65206F722073796D626F6C0000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x149 PUSH3 0x202 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH3 0x10000 PUSH1 0x1 PUSH1 0x70 SHL SUB NOT AND PUSH11 0x100000000000000000000 PUSH4 0xFFFFFFFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0x50 SHL SUB NOT AND SWAP2 SWAP1 SWAP2 OR PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND MUL OR PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE PUSH3 0x1A6 PUSH3 0x2A7 JUMP JUMPDEST PUSH3 0x1B0 PUSH3 0x52D JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH32 0x958B6B3E25D854F9E658CD5610BD9D184123D203F58F95ADF261E0D7D0DD65A5 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP PUSH3 0xB22 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH3 0x2A2 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x277 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 PUSH3 0x29D SWAP2 SWAP1 PUSH3 0xA1B JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST PUSH3 0x2B1 PUSH3 0x741 JUMP JUMPDEST PUSH3 0x2C1 PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E68F213 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB9A3C84C SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x31C 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 PUSH3 0x342 SWAP2 SWAP1 PUSH3 0xA35 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH32 0x536B696E6E794F7074696D69737469634F7261636C6500000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3BA 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 PUSH3 0x3E0 SWAP2 SWAP1 PUSH3 0xA35 JUMP JUMPDEST PUSH1 0x10 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH5 0x53746F7265 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x452 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 PUSH3 0x478 SWAP2 SWAP1 PUSH3 0xA35 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5B97AADD PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 PUSH4 0x5B97AADD SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x4D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x4ED 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 PUSH3 0x513 SWAP2 SWAP1 PUSH3 0xA5A JUMP JUMPDEST MLOAD PUSH1 0xB SSTORE POP PUSH3 0x52B PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST PUSH3 0x537 PUSH3 0x741 JUMP JUMPDEST PUSH3 0x547 PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC73A32C3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5AB 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 PUSH3 0x5D1 SWAP2 SWAP1 PUSH3 0xA9F JUMP JUMPDEST PUSH1 0xA PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173684C5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x65B 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 PUSH3 0x681 SWAP2 SWAP1 PUSH3 0xABD JUMP JUMPDEST PUSH1 0xA PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7998A1C4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x6F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x705 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 PUSH3 0x72B SWAP2 SWAP1 PUSH3 0xA1B JUMP JUMPDEST PUSH1 0x11 SSTORE PUSH3 0x52B PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH3 0x52B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0xF7 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x7A3 SWAP1 PUSH3 0xAE5 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x7C7 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x812 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x7E2 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x812 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x812 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x812 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x7F5 JUMP JUMPDEST POP PUSH3 0x820 SWAP3 SWAP2 POP PUSH3 0x824 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x820 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x825 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x87C JUMPI PUSH3 0x87C PUSH3 0x83B JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x8B2 JUMPI PUSH3 0x8B2 PUSH3 0x83B JUMP JUMPDEST PUSH1 0x20 PUSH3 0x8C8 PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH3 0x851 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP6 DUP3 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x8DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x8FD JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP3 DUP3 ADD DUP5 ADD MSTORE DUP3 ADD PUSH3 0x8E0 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x90F JUMPI PUSH1 0x0 DUP4 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x931 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x96A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x982 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x990 DUP12 DUP4 DUP13 ADD PUSH3 0x884 JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x9B6 DUP11 DUP3 DUP12 ADD PUSH3 0x884 JUMP JUMPDEST SWAP7 POP POP PUSH3 0x9C7 PUSH1 0x40 DUP10 ADD PUSH3 0x919 JUMP JUMPDEST SWAP5 POP PUSH3 0x9D7 PUSH1 0x60 DUP10 ADD PUSH3 0x919 JUMP JUMPDEST SWAP4 POP PUSH3 0x9E7 PUSH1 0x80 DUP10 ADD PUSH3 0x936 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH3 0xA0D PUSH1 0xC0 DUP10 ADD PUSH3 0x919 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA53 DUP3 PUSH3 0x919 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA6D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0xA92 JUMPI PUSH3 0xA92 PUSH3 0x83B JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xAB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xA53 DUP3 PUSH3 0x936 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xAD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0xA53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0xAFA JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0xB1C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4B02 DUP1 PUSH3 0xB32 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x31E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0xB5351EE2 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xCEFED55F GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDF738FC8 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xDF738FC8 EQ PUSH2 0x97A JUMPI DUP1 PUSH4 0xED4DE3A3 EQ PUSH2 0x9A7 JUMPI DUP1 PUSH4 0xF1D24BAB EQ PUSH2 0x9DC JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0xA00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCEFED55F EQ PUSH2 0x8F0 JUMPI DUP1 PUSH4 0xD412F5A4 EQ PUSH2 0x910 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x934 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBEC73ADE GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xBEC73ADE EQ PUSH2 0x86A JUMPI DUP1 PUSH4 0xC01E1BD6 EQ PUSH2 0x88A JUMPI DUP1 PUSH4 0xC73A32C3 EQ PUSH2 0x8AF JUMPI DUP1 PUSH4 0xCC2C929E EQ PUSH2 0x8D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB5351EE2 EQ PUSH2 0x821 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0xBE0BA122 EQ PUSH2 0x84B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x975057E7 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x795 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x7B5 JUMPI DUP1 PUSH4 0xB2084202 EQ PUSH2 0x7D5 JUMPI DUP1 PUSH4 0xB454E326 EQ PUSH2 0x7EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x975057E7 EQ PUSH2 0x735 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x755 JUMPI DUP1 PUSH4 0xA6AF2DFE EQ PUSH2 0x775 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x753B91BB EQ PUSH2 0x6B4 JUMPI DUP1 PUSH4 0x7998A1C4 EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0x87A515D3 EQ PUSH2 0x6EA JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x700 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x26A JUMPI DUP1 PUSH4 0x3FA856C9 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x51C6590A GT PUSH2 0x1FD JUMPI DUP1 PUSH4 0x51C6590A EQ PUSH2 0x620 JUMPI DUP1 PUSH4 0x5DF45A37 EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0x62822D34 EQ PUSH2 0x648 JUMPI DUP1 PUSH4 0x66DB5240 EQ PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3FA856C9 EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x4464FAE4 EQ PUSH2 0x5EA JUMPI DUP1 PUSH4 0x4F52FD17 EQ PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x524 JUMPI DUP1 PUSH4 0x27F224CA EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x579 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x595 JUMPI DUP1 PUSH4 0x3CC400B3 EQ PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x173684C5 GT PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x1BF71C38 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x1BF71C38 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x22302922 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x173684C5 EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x19E9D894 EQ PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x8ED5B14 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x11CFC159 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x13111725 EQ PUSH2 0x3E5 JUMPI DUP1 PUSH4 0x135C404E EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x325 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0x3E7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x370 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EA0 JUMP JUMPDEST PUSH2 0xAA7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDD JUMP JUMPDEST PUSH2 0xB46 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x3CD SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x4042 JUMP JUMPDEST PUSH2 0xB5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3 SLOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0xE9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0x4A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x407C JUMP JUMPDEST PUSH2 0xEC7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x10 SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x51F CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH2 0xEEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x53F CALLDATASIZE PUSH1 0x4 PUSH2 0x414C JUMP JUMPDEST PUSH2 0xF60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x418D JUMP JUMPDEST PUSH2 0x1011 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x10A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x5B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDD JUMP JUMPDEST PUSH2 0x1147 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x117E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x5E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x407C JUMP JUMPDEST PUSH2 0x1373 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x61B CALLDATASIZE PUSH1 0x4 PUSH2 0x41AA JUMP JUMPDEST PUSH2 0x17DE JUMP JUMPDEST PUSH2 0x375 PUSH2 0x62E CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH2 0x1957 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x1AFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x654 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x663 CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH2 0x1B0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x699 CALLDATASIZE PUSH1 0x4 PUSH2 0x41CF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x6CF CALLDATASIZE PUSH1 0x4 PUSH2 0x4042 JUMP JUMPDEST PUSH2 0x1B37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x71B CALLDATASIZE PUSH1 0x4 PUSH2 0x41CF JUMP JUMPDEST PUSH2 0x1FDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0x2069 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x770 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDD JUMP JUMPDEST PUSH2 0x2078 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xE SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x7B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDD JUMP JUMPDEST PUSH2 0x2113 JUMP JUMPDEST PUSH2 0x7C8 PUSH2 0x7C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41EC JUMP JUMPDEST PUSH2 0x2120 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0x4260 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4CC PUSH2 0x806 CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x22C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x842 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x251D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x397 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x885 CALLDATASIZE PUSH1 0x4 PUSH2 0x407C JUMP JUMPDEST PUSH2 0x2537 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x4CC SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x3CD SWAP1 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x397 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x90B CALLDATASIZE PUSH1 0x4 PUSH2 0x407C JUMP JUMPDEST PUSH2 0x272B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x94F CALLDATASIZE PUSH1 0x4 PUSH2 0x42C2 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 CALLVALUE DUP1 ISZERO PUSH2 0x986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x995 CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C7 PUSH2 0x9C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0x50 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x294F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0xA24 SWAP1 PUSH2 0x42F0 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA50 SWAP1 PUSH2 0x42F0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA9D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA72 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA9D 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 0xA80 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xADA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD1 SWAP1 PUSH2 0x432B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAE2 PUSH2 0x296F JUMP JUMPDEST PUSH2 0xAEA PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD DUP3 ISZERO ISZERO PUSH2 0x100 MUL PUSH2 0xFF00 NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x1D492B98217FF50D005C548E0FA3A96DC38B2BAFCCAF5BAEDF42C112BD39FDFB SWAP1 PUSH2 0xB33 SWAP1 DUP4 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xB43 PUSH2 0x29CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB53 CALLER DUP5 DUP5 PUSH2 0x29DC JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x14995B185E5CC8185C9948191A5CD8589B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0xBB2 PUSH2 0x296F JUMP JUMPDEST PUSH2 0xBBA PUSH2 0x29C1 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP3 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0xBF4 JUMPI POP PUSH8 0x3782DACE9D90000 DUP3 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC11 JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x496E76616C69642066656573 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC57 DUP4 PUSH2 0x2B01 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xCAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x50656E64696E672072656C617920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 PUSH2 0x10A7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xCC8 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x2B44 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xCEA JUMPI PUSH2 0xCEA PUSH2 0x4362 JUMP JUMPDEST DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x15 PUSH2 0xD15 DUP4 PUSH2 0x438E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB SLOAD DUP2 MSTORE POP SWAP1 POP PUSH2 0xD70 DUP2 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xD8C DUP8 DUP4 PUSH2 0x2B77 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH2 0xDA3 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST LT ISZERO PUSH2 0xDED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x496E73756666696369656E7420706F6F6C2062616C616E6365 PUSH1 0x38 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD DUP5 PUSH2 0xDFD SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE15 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE2E SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x6 SLOAD PUSH2 0xE50 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH2 0x2BCB JUMP JUMPDEST DUP6 PUSH32 0xA4CA36D112520CCED74325C72711F376FE4015665829D879BA21590CB8130BE0 DUP10 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xE84 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x44EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA8 PUSH2 0x296F JUMP JUMPDEST PUSH2 0xEB0 PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0xEBA PUSH1 0x0 PUSH2 0x2C3C JUMP JUMPDEST SWAP1 POP PUSH2 0xEC4 PUSH2 0x29CD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xED1 PUSH2 0x296F JUMP JUMPDEST PUSH2 0xEE3 PUSH2 0xEDE DUP5 DUP5 PUSH2 0x2B77 JUMP JUMPDEST PUSH2 0x2CCA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x117C72B3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF59 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6D DUP5 DUP5 DUP5 PUSH2 0x2D07 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 0xFF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6C6C6F77616E6365 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x1006 DUP6 CALLER PUSH2 0x1001 DUP7 DUP6 PUSH2 0x43B2 JUMP JUMPDEST PUSH2 0x29DC JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x103B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD1 SWAP1 PUSH2 0x432B JUMP JUMPDEST PUSH2 0x1043 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x104B PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH10 0xFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND DUP2 MSTORE PUSH32 0x958B6B3E25D854F9E658CD5610BD9D184123D203F58F95ADF261E0D7D0DD65A5 SWAP1 PUSH1 0x20 ADD PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1142 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1119 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 0x113D SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0xB53 SWAP2 DUP6 SWAP1 PUSH2 0x1001 SWAP1 DUP7 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH2 0x1186 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x118E PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC73A32C3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11F0 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 0x1214 SWAP2 SWAP1 PUSH2 0x4530 JUMP JUMPDEST PUSH1 0xA PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173684C5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x129C 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 0x12C0 SWAP2 SWAP1 PUSH2 0x454D JUMP JUMPDEST PUSH1 0xA PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7998A1C4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x132E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1342 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 0x1366 SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x11 SSTORE PUSH2 0x1371 PUSH2 0x29CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x137B PUSH2 0x296F JUMP JUMPDEST PUSH2 0x1383 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138E DUP4 PUSH2 0x2B01 JUMP JUMPDEST SWAP1 POP PUSH2 0x139A DUP2 DUP4 PUSH2 0x2EDF JUMP JUMPDEST PUSH1 0x1 DUP3 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF PUSH2 0x4362 JUMP JUMPDEST EQ PUSH2 0x13EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481CD95D1D1B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x1412 SWAP2 SWAP1 PUSH2 0x456A JUMP JUMPDEST SWAP1 POP PUSH2 0x141C PUSH2 0x10A7 JUMP JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x1466 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x139BDD081CD95D1D1B1958589B19481E595D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x14A1 JUMPI POP PUSH2 0x1491 DUP2 PUSH2 0x384 PUSH2 0x456A JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x149F PUSH2 0x10A7 JUMP JUMPDEST GT JUMPDEST PUSH2 0x14E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x2737BA1039B637BB903932B630BCB2B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x1554 SWAP1 DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x1587 SWAP2 PUSH2 0x157D SWAP2 PUSH2 0x4592 JUMP JUMPDEST DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2F6C JUMP JUMPDEST DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x1596 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x15A4 DUP5 DUP7 PUSH2 0x2F94 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xA SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x15D9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x15F1 JUMPI PUSH2 0x15EC DUP8 PUSH1 0x40 ADD MLOAD DUP5 PUSH2 0x2FBF JUMP JUMPDEST PUSH2 0x1626 JUMP JUMPDEST PUSH2 0x1626 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x160C JUMPI DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x160E JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163A DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD PUSH2 0x2F6C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH1 0xA0 ADD MLOAD DUP9 PUSH1 0xC0 ADD MLOAD PUSH2 0x1652 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x169A JUMPI PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x1695 SWAP1 PUSH2 0x167D DUP4 DUP6 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x3088 JUMP JUMPDEST PUSH2 0x16D8 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x16BC SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x16D8 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP5 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16E4 DUP4 DUP8 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x80 ADD MLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16FC SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1715 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x172E SWAP2 SWAP1 PUSH2 0x45B4 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1747 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1755 SWAP1 POP PUSH2 0x30B8 JUMP JUMPDEST PUSH2 0x176F PUSH2 0x176A DUP11 PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x2F6C JUMP JUMPDEST PUSH2 0x30FF JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH32 0xCFDDA74FCE9FEDB259E0F0A1AB1550E19B338488ECE64976A4639E7FCE0293A7 DUP12 PUSH1 0x40 MLOAD PUSH2 0x17A9 SWAP2 SWAP1 PUSH2 0x45F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE POP PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE POP PUSH2 0xE9A SWAP2 POP PUSH2 0x29CD SWAP1 POP JUMP JUMPDEST PUSH2 0x17E6 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x17EE PUSH2 0x29C1 JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x17FD JUMPI POP PUSH1 0xA SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1839 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x86C2DCE840E6CADCC840CAE8D PUSH1 0x9B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x184C PUSH2 0x3132 JUMP JUMPDEST PUSH2 0x1856 SWAP1 DUP6 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x1860 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x9 SLOAD PUSH2 0x1870 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x7 SLOAD LT ISZERO PUSH2 0x18C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5574696C697A6174696F6E20746F6F206869676820746F2072656D6F76650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x18CB CALLER DUP5 PUSH2 0x31AA JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x18DD SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 ISZERO PUSH2 0x18F7 JUMPI PUSH2 0x18F2 CALLER DUP3 PUSH2 0x2FBF JUMP JUMPDEST PUSH2 0x1913 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x1913 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH32 0xC54FC223FFD1A8F36652B5E83DB4FFF50F5AE151B11CEB56D5499B9F6E1FA18 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST PUSH2 0x195F PUSH2 0x296F JUMP JUMPDEST PUSH2 0x1967 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1978 JUMPI POP DUP1 CALLVALUE EQ JUMPDEST DUP1 PUSH2 0x1981 JUMPI POP CALLVALUE ISZERO JUMPDEST PUSH2 0x19CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616420616464206C6971756964697479204574682076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19D7 PUSH2 0x3132 JUMP JUMPDEST PUSH2 0x19E9 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x19F3 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP1 POP PUSH2 0x19FF CALLER DUP3 PUSH2 0x32F9 JUMP JUMPDEST DUP2 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1A11 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP CALLVALUE ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A27 JUMPI POP PUSH1 0xA SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 CALLVALUE 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 0x1A7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x1AB7 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP6 PUSH2 0x2BCB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x351F600EF1E31E5E13B4DC27BFF4CBDE3E9269F0FFC666629AE6CAC573EB220 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xB43 PUSH2 0x29CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B05 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x113D PUSH2 0x33D8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B17 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x1B1F PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x1B28 DUP3 PUSH2 0x2C3C JUMP JUMPDEST SWAP1 POP PUSH2 0x1B32 PUSH2 0x29CD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x14995B185E5CC8185C9948191A5CD8589B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x1B8C PUSH2 0x296F JUMP JUMPDEST PUSH2 0x1B94 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B9E PUSH2 0x10A7 JUMP JUMPDEST SWAP1 POP PUSH8 0x3782DACE9D90000 DUP4 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0x1BDA JUMPI POP PUSH8 0x3782DACE9D90000 DUP4 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1BF7 JUMPI POP PUSH8 0x6F05B59D3B20000 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0x1C32 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x496E76616C69642066656573 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C3D DUP5 PUSH2 0x2B01 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1C93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x50656E64696E672072656C617920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA2 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x2B44 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1CC4 JUMPI PUSH2 0x1CC4 PUSH2 0x4362 JUMP JUMPDEST DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x15 PUSH2 0x1CEF DUP4 PUSH2 0x438E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB SLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0x1D4D DUP8 DUP4 PUSH2 0x2B77 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D58 DUP3 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1D74 DUP6 DUP5 PUSH2 0x2F94 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1DD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x52656C61792063616E6E6F74206265207370656420757 PUSH1 0x4C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH2 0x1DEB SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1E35 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x496E73756666696369656E7420706F6F6C2062616C616E6365 PUSH1 0x38 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD DUP6 PUSH2 0x1E45 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E79 DUP11 PUSH1 0xC0 ADD MLOAD DUP12 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x1E65 SWAP2 SWAP1 PUSH2 0x4592 JUMP JUMPDEST PUSH2 0x1E6F SWAP2 SWAP1 PUSH2 0x4592 JUMP JUMPDEST DUP12 PUSH1 0x80 ADD MLOAD PUSH2 0x2F6C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x80 ADD MLOAD PUSH2 0x1E8D SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1EA1 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1EBD SWAP1 DUP5 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x1F0B SWAP1 ADDRESS PUSH2 0x1EF2 DUP7 DUP6 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x2BCB JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F29 JUMPI PUSH2 0x1F24 DUP12 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x2FBF JUMP JUMPDEST PUSH2 0x1F4B JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x1F4B SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0x3088 JUMP JUMPDEST DUP8 PUSH32 0xA4CA36D112520CCED74325C72711F376FE4015665829D879BA21590CB8130BE0 DUP13 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x1F7F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x44EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH32 0xF98CDDC88BC965917007822B05056CB92BC9DDF0F8BCC61678400CB78313BB4B DUP9 PUSH1 0x40 MLOAD PUSH2 0x1FC1 SWAP2 SWAP1 PUSH2 0x45F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2004 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD1 SWAP1 PUSH2 0x432B JUMP JUMPDEST PUSH2 0x200C PUSH2 0x296F JUMP JUMPDEST PUSH2 0x2014 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x485A12424BD0C2C66A131C2681CB6C743B9573AF3AE5F3014EF6CE7F55AB0192 SWAP2 ADD PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD PUSH2 0xA24 SWAP1 PUSH2 0x42F0 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x20FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x2109 CALLER DUP6 PUSH2 0x1001 DUP7 DUP6 PUSH2 0x43B2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB53 CALLER DUP5 DUP5 PUSH2 0x2D07 JUMP JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0x2170 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2188 JUMPI PUSH2 0x2188 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x21BB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x21A6 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x22BE JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x21DF JUMPI PUSH2 0x21DF PUSH2 0x465A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x21F1 SWAP2 SWAP1 PUSH2 0x4670 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21FF SWAP3 SWAP2 SWAP1 PUSH2 0x46BD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x223A 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 0x223F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x228B JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x2258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2272 SWAP2 SWAP1 PUSH2 0x46CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD1 SWAP2 SWAP1 PUSH2 0x3E7F JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x229E JUMPI PUSH2 0x229E PUSH2 0x465A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x22B6 SWAP1 PUSH2 0x476E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x21C1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x22CD PUSH2 0x296F JUMP JUMPDEST PUSH2 0x22D5 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E68F213 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB9A3C84C SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x231A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x232E 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 0x2352 SWAP2 SWAP1 PUSH2 0x4789 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH22 0x536B696E6E794F7074696D69737469634F7261636C65 PUSH1 0x50 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C1 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 0x23E5 SWAP2 SWAP1 PUSH2 0x4789 JUMP JUMPDEST PUSH1 0x10 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH5 0x53746F7265 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2455 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 0x2479 SWAP2 SWAP1 PUSH2 0x4789 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5B97AADD PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 PUSH4 0x5B97AADD SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24EC 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 0x2510 SWAP2 SWAP1 PUSH2 0x47A6 JUMP JUMPDEST MLOAD PUSH1 0xB SSTORE POP PUSH2 0x1371 PUSH2 0x29CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2527 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x252F PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0xEBA PUSH2 0x3132 JUMP JUMPDEST PUSH2 0x253F PUSH2 0x296F JUMP JUMPDEST PUSH2 0x2547 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2552 DUP4 PUSH2 0x2B01 JUMP JUMPDEST SWAP1 POP PUSH2 0x255E DUP2 DUP4 PUSH2 0x2EDF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x256A DUP3 DUP5 PUSH2 0x2F94 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x258E SWAP2 SWAP1 PUSH2 0x456A JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x259C PUSH2 0x10A7 JUMP JUMPDEST LT DUP1 ISZERO PUSH2 0x25BB JUMPI POP PUSH1 0x1 DUP4 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x25B9 JUMPI PUSH2 0x25B9 PUSH2 0x4362 JUMP JUMPDEST EQ JUMPDEST DUP1 ISZERO PUSH2 0x25DC JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST PUSH2 0x2622 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x52656C61792063616E6E6F74206265207370656420757 PUSH1 0x4C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH2 0x2667 SWAP3 SWAP2 PUSH2 0x265D SWAP2 PUSH2 0x4592 JUMP JUMPDEST PUSH2 0x157D SWAP2 SWAP1 PUSH2 0x4592 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x267B SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0xA SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0x26B9 JUMPI PUSH1 0x6 SLOAD PUSH2 0x26A6 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH2 0x2BCB JUMP JUMPDEST PUSH2 0x26B4 DUP7 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x2FBF JUMP JUMPDEST PUSH2 0x26DD JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x26DD SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLER SWAP1 DUP5 PUSH2 0x2BCB JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xF98CDDC88BC965917007822B05056CB92BC9DDF0F8BCC61678400CB78313BB4B DUP8 PUSH1 0x40 MLOAD PUSH2 0x2717 SWAP2 SWAP1 PUSH2 0x45F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST PUSH2 0x2733 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x273B PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x2743 PUSH2 0x10A7 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x2762 SWAP2 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH2 0x456A JUMP JUMPDEST PUSH4 0xFFFFFFFF AND GT PUSH2 0x27A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x50617374206C6976656E657373 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x1 DUP2 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x27BA JUMPI PUSH2 0x27BA PUSH2 0x4362 JUMP JUMPDEST EQ PUSH2 0x27F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x4E6F742064697370757461626C65 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2803 DUP4 PUSH2 0x2B01 JUMP JUMPDEST SWAP1 POP PUSH2 0x280F DUP2 DUP4 PUSH2 0x2EDF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x281B DUP5 DUP5 PUSH2 0x2B77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2840 DUP5 PUSH1 0x20 ADD MLOAD CALLER DUP7 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0xC0 ADD MLOAD PUSH2 0x283B DUP8 PUSH2 0x2CCA JUMP JUMPDEST PUSH2 0x344F JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0xA0 ADD MLOAD DUP5 PUSH1 0xC0 ADD MLOAD PUSH2 0x2856 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2867 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x2883 SWAP1 DUP5 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE DUP1 ISZERO PUSH2 0x28D7 JUMPI CALLER PUSH2 0x28A7 DUP6 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0x29751133C2D0A0EA7A9DA312248B12EF10AC4C20F4E3AB5EEBBB80D853B38367 SWAP1 PUSH1 0x0 SWAP1 LOG4 PUSH2 0x290D JUMP JUMPDEST CALLER PUSH2 0x28E1 DUP6 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0x14173C4D3BD95E34F5C8F78729323444C9272BD21051E70045B64ED48F658183 SWAP1 PUSH1 0x0 SWAP1 LOG4 JUMPDEST POP POP POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2923 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x292B PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x2935 PUSH1 0x0 PUSH2 0x2C3C JUMP JUMPDEST PUSH2 0x293E DUP5 PUSH2 0x2C3C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x294A PUSH2 0x29CD JUMP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x2957 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x295F PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x2967 PUSH2 0x378C JUMP JUMPDEST PUSH2 0x1371 PUSH2 0x29CD JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH2 0x1371 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2A3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2A9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 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 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH2 0x2B27 SWAP2 DUP5 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD PUSH2 0x47E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB57 SWAP1 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP4 PUSH2 0x2F6C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2B27 SWAP2 SWAP1 PUSH2 0x45F5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BAD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x480F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x2C36 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH1 0x84 ADD 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 0x384F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C46 PUSH2 0x378C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD SGT PUSH2 0x2C58 JUMPI PUSH1 0x0 PUSH2 0x2C5C JUMP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x9 SLOAD DUP6 PUSH2 0x2C6F SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH2 0x2C79 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x7 SLOAD PUSH2 0x2C8B SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2CA4 JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x2CB7 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x2CC1 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB57 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH9 0xE4CAD8C2F290C2E6D PUSH1 0xBB SHL DUP2 MSTORE POP DUP5 PUSH2 0x3921 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2D6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2DCD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 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 0x2E45 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x2E4F DUP3 DUP3 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x2E85 SWAP1 DUP5 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x2ED1 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x2EE8 DUP2 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0xE9A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x4861736865642072656C617920706172616D7320646F206E6F74206D61746368 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206578697374696E672072656C6179206861736820666F72206465706F736974 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2F8A DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND PUSH2 0x4603 JUMP JUMPDEST PUSH2 0xEE3 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BAD SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO PUSH2 0x2FEB JUMPI PUSH1 0x6 SLOAD PUSH2 0xE9A SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3049 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND 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 0x3083 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x3083 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2BFF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30C2 PUSH2 0x33D8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xC SLOAD PUSH2 0x30D2 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH2 0x30DD PUSH2 0x10A7 JUMP JUMPDEST PUSH1 0xA DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH1 0xC PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3111 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x312A SWAP2 SWAP1 PUSH2 0x45B4 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x313D PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x314E JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST PUSH2 0x3156 PUSH2 0x30B8 JUMP JUMPDEST PUSH2 0x315E PUSH2 0x378C JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0x3173 SWAP2 SWAP1 PUSH2 0x45B4 JUMP JUMPDEST PUSH2 0x317D SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST SWAP1 POP PUSH2 0x3188 PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x319A DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x31A4 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x320A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 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 0x327E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x3288 DUP3 DUP3 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x32B6 SWAP1 DUP5 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x2AF4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x334F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3361 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x338E SWAP1 DUP5 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH1 0x1 PUSH1 0x50 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x33FF PUSH2 0x10A7 JUMP JUMPDEST PUSH2 0x3409 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xC SLOAD PUSH2 0x3428 SWAP2 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x3432 SWAP2 SWAP1 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x343C SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP1 POP PUSH1 0xC SLOAD DUP2 LT PUSH2 0x1B32 JUMPI PUSH1 0xC SLOAD PUSH2 0x31A4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x345C DUP6 DUP6 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD SWAP2 SWAP3 POP PUSH2 0x3481 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xAF355D1E SWAP1 PUSH2 0x34A1 PUSH2 0x10A7 JUMP JUMPDEST DUP7 PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP12 PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP16 PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34FC SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4893 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3546 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3543 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x3593 JUMPI PUSH1 0x6 SLOAD PUSH2 0x3566 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x3589 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND PUSH1 0x0 PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x2CC1 JUMP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x35EE JUMPI PUSH1 0x0 PUSH2 0x35A7 DUP3 DUP5 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH2 0x35C6 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x35E9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND PUSH1 0x0 PUSH2 0x3967 JUMP JUMPDEST DUP2 SWAP3 POP POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA SLOAD PUSH1 0xC0 DUP3 ADD SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x365B PUSH2 0x10A7 JUMP JUMPDEST PUSH2 0x3665 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x367B DUP9 DUP6 PUSH2 0x43B2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x6 SLOAD SWAP2 SWAP3 POP PUSH2 0x36C4 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH2 0x2BCB AND JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x36E6 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND DUP5 PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x9CE320C8 SWAP1 PUSH2 0x3706 PUSH2 0x10A7 JUMP JUMPDEST DUP8 DUP6 DUP13 ADDRESS PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x372B SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48FE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3759 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 0x377D SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST POP PUSH1 0x1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37ED 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 0x3811 SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH2 0x381B SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 SLOAD DUP2 GT ISZERO PUSH2 0xB43 JUMPI PUSH1 0x7 SLOAD PUSH2 0x3834 SWAP1 DUP3 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3845 SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38A4 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A8B SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x3083 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x38C2 SWAP2 SWAP1 PUSH2 0x49F7 JUMP JUMPDEST PUSH2 0x3083 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x392F DUP6 DUP6 PUSH2 0x3AA2 JUMP JUMPDEST SWAP1 POP DUP5 DUP2 PUSH2 0x393C DUP6 PUSH2 0x3AE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x394E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x39F0 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39CA 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 0x39EE SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x3A5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x3083 SWAP1 DUP5 SWAP1 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2BFF JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3A9A DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x3B24 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x60 SWAP1 ISZERO PUSH2 0x3AD3 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ABD SWAP2 SWAP1 PUSH2 0x4A57 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xB57 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ABD SWAP2 SWAP1 PUSH2 0x4A8B JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3AF3 PUSH1 0x80 DUP4 SWAP1 SHR PUSH2 0x3C4C JUMP JUMPDEST PUSH2 0x3AFC DUP4 PUSH2 0x3C4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x3B85 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x3BD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x3BEF SWAP2 SWAP1 PUSH2 0x4AB0 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 0x3C2C 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 0x3C31 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3C41 DUP3 DUP3 DUP7 PUSH2 0x3DEE JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x0 SHR SWAP1 POP DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH9 0x10000000000000000 MUL DUP2 OR PUSH24 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH5 0x100000000 MUL DUP2 OR PUSH28 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF AND SWAP1 POP DUP1 PUSH3 0x10000 MUL DUP2 OR PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND SWAP1 POP DUP1 PUSH2 0x100 MUL DUP2 OR PUSH31 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF AND SWAP1 POP DUP1 PUSH1 0x10 MUL DUP2 OR PUSH32 0xF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F AND SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP3 PUSH32 0x808080808080808080808080808080808080808080808080808080808080808 AND DUP2 PUSH2 0x3D70 JUMPI PUSH2 0x3D70 PUSH2 0x4622 JUMP JUMPDEST DIV PUSH1 0x4 PUSH32 0x404040404040404040404040404040404040404040404040404040404040404 DUP5 AND DIV PUSH1 0x2 PUSH32 0x202020202020202020202020202020202020202020202020202020202020202 DUP6 AND DIV OR AND PUSH1 0x27 MUL SWAP1 SWAP2 ADD PUSH32 0x3030303030303030303030303030303030303030303030303030303030303030 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3DFD JUMPI POP DUP2 PUSH2 0xEE3 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3E0D 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 0xAD1 SWAP2 SWAP1 PUSH2 0x3E7F JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3E42 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3E2A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2C36 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3E6B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xEE3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3E53 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE3 DUP2 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1B32 DUP2 PUSH2 0x3EBD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EFB DUP2 PUSH2 0x3EBD JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F41 JUMPI PUSH2 0x3F41 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1B32 DUP2 PUSH2 0x3F47 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1B32 DUP2 PUSH2 0x3F67 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3FBA JUMPI PUSH2 0x3FBA PUSH2 0x3F09 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP3 POP DUP4 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3FD5 DUP3 PUSH2 0x3F47 JUMP JUMPDEST DUP2 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3FE7 PUSH1 0x40 DUP6 ADD PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3FF8 PUSH1 0x60 DUP6 ADD PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x4013 PUSH1 0xA0 DUP6 ADD PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x4024 PUSH1 0xC0 DUP6 ADD PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x4035 PUSH1 0xE0 DUP6 ADD PUSH2 0x3F79 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x120 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4056 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4060 DUP5 DUP5 PUSH2 0x3F84 JUMP JUMPDEST SWAP2 POP PUSH2 0x100 DUP4 ADD CALLDATALOAD PUSH2 0x4071 DUP2 PUSH2 0x3F47 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x1E0 DUP2 SLT ISZERO PUSH2 0x4091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x409B DUP6 DUP6 PUSH2 0x3F84 JUMP JUMPDEST SWAP3 POP PUSH1 0xE0 PUSH1 0xFF NOT DUP3 ADD SLT ISZERO PUSH2 0x40AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40B8 PUSH2 0x3F1F JUMP JUMPDEST PUSH2 0x100 DUP5 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x40CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MSTORE PUSH2 0x40DA PUSH2 0x120 DUP6 ADD PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x40EC PUSH2 0x140 DUP6 ADD PUSH2 0x3F79 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x40FE PUSH2 0x160 DUP6 ADD PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4110 PUSH2 0x180 DUP6 ADD PUSH2 0x3F79 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1A0 DUP5 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1C0 SWAP1 SWAP4 ADD CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE POP SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x416C DUP2 PUSH2 0x3EBD JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x417C DUP2 PUSH2 0x3EBD JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x419F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE3 DUP2 PUSH2 0x3F47 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4071 DUP2 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE3 DUP2 PUSH2 0x3EBD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x422A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x424E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x42B5 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x42A3 DUP6 DUP4 MLOAD PUSH2 0x3E53 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4287 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x42D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x42E0 DUP2 PUSH2 0x3EBD JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4071 DUP2 PUSH2 0x3EBD JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4304 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x4325 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x17 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616C6C6572206E6F74206272696467652061646D696E000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 EQ ISZERO PUSH2 0x43A8 JUMPI PUSH2 0x43A8 PUSH2 0x4378 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x43C4 JUMPI PUSH2 0x43C4 PUSH2 0x4378 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x43DC JUMPI PUSH2 0x43DC PUSH2 0x4378 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x60 DUP6 ADD MLOAD AND PUSH1 0x60 DUP7 ADD MSTORE POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE DUP1 PUSH1 0xA0 DUP5 ADD MLOAD AND PUSH1 0xA0 DUP6 ADD MSTORE DUP1 PUSH1 0xC0 DUP5 ADD MLOAD AND PUSH1 0xC0 DUP6 ADD MSTORE POP POP PUSH4 0xFFFFFFFF PUSH1 0xE0 DUP3 ADD MLOAD AND PUSH1 0xE0 DUP4 ADD MSTORE POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x4475 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 PUSH2 0x44A2 SWAP1 DUP5 ADD DUP3 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x44BD PUSH1 0x60 DUP5 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x44D5 PUSH1 0x80 DUP5 ADD DUP3 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0xA0 DUP2 DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x200 DUP2 ADD PUSH2 0x44FA DUP3 DUP7 PUSH2 0x43E1 JUMP JUMPDEST PUSH2 0x4508 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4455 JUMP JUMPDEST DUP3 PUSH2 0x1E0 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEE3 DUP2 PUSH2 0x3F47 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x455F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEE3 DUP2 PUSH2 0x3F67 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4589 JUMPI PUSH2 0x4589 PUSH2 0x4378 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4589 JUMPI PUSH2 0x4589 PUSH2 0x4378 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT DUP1 ISZERO PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 SWAP1 SUB DUP6 SGT AND ISZERO PUSH2 0x45D6 JUMPI PUSH2 0x45D6 PUSH2 0x4378 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL DUP4 SWAP1 SUB DUP5 SLT DUP2 AND ISZERO PUSH2 0x45EF JUMPI PUSH2 0x45EF PUSH2 0x4378 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0xB57 DUP3 DUP5 PUSH2 0x4455 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x461D JUMPI PUSH2 0x461D PUSH2 0x4378 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4655 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x46A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x46B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x46F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x470A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x471C JUMPI PUSH2 0x471C PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4744 JUMPI PUSH2 0x4744 PUSH2 0x3F09 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x475D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C41 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x4782 JUMPI PUSH2 0x4782 PUSH2 0x4378 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x479B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEE3 DUP2 PUSH2 0x3EBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x47DA JUMPI PUSH2 0x47DA PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x47F6 DUP3 DUP6 PUSH2 0x43E1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160 DUP2 ADD PUSH2 0x481E DUP3 DUP8 PUSH2 0x43E1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLT DUP1 ISZERO PUSH1 0x1 PUSH1 0xFF SHL DUP6 ADD DUP5 SLT AND ISZERO PUSH2 0x4872 JUMPI PUSH2 0x4872 PUSH2 0x4378 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 ADD DUP4 SGT DUP2 AND ISZERO PUSH2 0x488D JUMPI PUSH2 0x488D PUSH2 0x4378 JUMP JUMPDEST POP POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP12 DUP4 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP13 AND PUSH1 0x20 DUP6 ADD MSTORE DUP2 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x48BA DUP3 DUP6 ADD DUP13 PUSH2 0x3E53 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH1 0xA0 DUP5 ADD SWAP8 SWAP1 SWAP8 MSTORE POP POP SWAP3 SWAP1 SWAP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP4 AND PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x100 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x200 DUP9 DUP4 MSTORE PUSH4 0xFFFFFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x4924 DUP2 DUP5 ADD DUP9 PUSH2 0x3E53 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x493D PUSH1 0x60 DUP4 ADD DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE POP PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE POP PUSH1 0x60 DUP6 ADD MLOAD DUP1 ISZERO ISZERO PUSH1 0xC0 DUP5 ADD MSTORE POP PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH2 0x100 DUP2 DUP2 DUP6 ADD MSTORE PUSH1 0xC0 DUP8 ADD MLOAD SWAP2 POP PUSH2 0x120 DUP3 DUP2 DUP7 ADD MSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP3 POP PUSH2 0x140 DUP4 DUP2 DUP8 ADD MSTORE DUP3 DUP10 ADD MLOAD PUSH2 0x160 DUP8 ADD MSTORE DUP2 DUP10 ADD MLOAD PUSH2 0x180 DUP8 ADD MSTORE DUP1 DUP10 ADD MLOAD PUSH2 0x1A0 DUP8 ADD MSTORE POP POP POP POP PUSH2 0x49E2 PUSH2 0x1C0 DUP4 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x3C41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEE3 DUP2 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x4A26 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3E27 JUMP JUMPDEST DUP5 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x4A3A DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x3E27 JUMP JUMPDEST DUP5 MLOAD SWAP2 ADD SWAP1 PUSH2 0x4A4D DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3E27 JUMP JUMPDEST ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0xFA SHL DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x4A73 DUP2 PUSH1 0x1 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL PUSH1 0x1 SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x2 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4A9D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4AC2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3E27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE EQ DELEGATECALL 0xB2 0xBE LT JUMP EXTCODESIZE 0xAA 0x24 SLT PUSH21 0xEA1A6EFE24CDFB5845D64A1FDEFB484A5895776D64 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "1647:49553:14:-:0;;;2712:32;;;-1:-1:-1;;2712:32:14;;;;;8889:914;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;728:12:12;:28;;-1:-1:-1;;;;;;728:28:12;-1:-1:-1;;;;;728:28:12;;;;;1965:13:0;;;;9160:14:14;;1965:13:0;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1988:17:0;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;874:11:10;:18;;-1:-1:-1;;874:18:10;888:4;874:18;;;-1:-1:-1;9194:26:14;;:31;;::::2;::::0;:68:::2;;-1:-1:-1::0;9229:28:14;;:33;::::2;9194:68;9186:108;;;::::0;-1:-1:-1;;;9186:108:14;;2753:2:22;9186:108:14::2;::::0;::::2;2735:21:22::0;2792:2;2772:18;;;2765:30;2831:29;2811:18;;;2804:57;2878:18;;9186:108:14::2;;;;;;;;;9304:11;:48:::0;;-1:-1:-1;;;;;;9304:48:14::2;-1:-1:-1::0;;;;;9304:48:14;;::::2;::::0;;;::::2;::::0;;;9362:7:::2;:26:::0;;-1:-1:-1;;;;;;9362:26:14::2;9304:48;9362:26:::0;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;9423:16:::2;:14;:16::i;:::-;9398:15;:42:::0;;-1:-1:-1;;;;;;9450:40:14;9398:42;::::2;::::0;;;::::2;::::0;;;::::2;-1:-1:-1::0;;;;;;9450:40:14;;;;;;-1:-1:-1;;;;;9450:40:14;::::2;;;-1:-1:-1::0;;9500:24:14::2;::::0;::::2;;;::::0;;9535::::2;:22;:24::i;:::-;9637:27;:25;:27::i;:::-;9777:18;::::0;9764:32:::2;::::0;9777:18;;;::::2;-1:-1:-1::0;;;;;9777:18:14::2;3051:50:22::0;;9764:32:14::2;::::0;3039:2:22;3024:18;9764:32:14::2;;;;;;;8889:914:::0;;;;;;;1647:49553;;1457:276:12;1512:7;1535:12;;-1:-1:-1;;;;;1535:12:12;:28;1531:196;;1592:12;;;;;;;;-1:-1:-1;;;;;1592:12:12;-1:-1:-1;;;;;1586:34:12;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1579:43;;1457:276;:::o;1531:196::-;-1:-1:-1;1660:15:12;;1457:276::o;35811:457:14:-;1317:19:10;:17;:19::i;:::-;1346:17;2445:11;:19;;-1:-1:-1;;2445:19:10;;;2335:136;1346:17;35918:11:14::1;::::0;:20:::1;::::0;;-1:-1:-1;;;35918:20:14;;;;35877:22:::1;::::0;-1:-1:-1;;;;;35918:11:14::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:11;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36013:72;::::0;-1:-1:-1;;;36013:72:14;;36045:39:::1;36013:72;::::0;::::1;3660:25:22::0;35877:62:14;;-1:-1:-1;;;;;;36013:31:14;::::1;::::0;::::1;::::0;3633:18:22;;36013:72:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35949:16;:146:::0;;-1:-1:-1;;;;;;35949:146:14::1;-1:-1:-1::0;;;;;35949:146:14;;::::1;;::::0;;36129:55:::1;::::0;-1:-1:-1;;;36129:55:14;;-1:-1:-1;;;36129:55:14::1;::::0;::::1;3660:25:22::0;36129:31:14;;::::1;::::0;::::1;::::0;3633:18:22;;36129:55:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36106:5;:79:::0;;-1:-1:-1;;;;;;36106:79:14::1;-1:-1:-1::0;;;;;36106:79:14;;::::1;::::0;;::::1;::::0;;;36243:7:::1;::::0;36213:39:::1;::::0;-1:-1:-1;;;36213:39:14;;36106:79:::1;36243:7:::0;;::::1;::::0;;::::1;36213:39;::::0;::::1;3842:51:22::0;36106:79:14;36213:21:::1;::::0;3815:18:22;;36213:39:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48:::0;36195:15:::1;:66:::0;-1:-1:-1;1384:20:10;2658:11;:18;;-1:-1:-1;;2658:18:10;2672:4;2658:18;;;2477:206;1384:20;35811:457:14:o;36723:245::-;1317:19:10;:17;:19::i;:::-;1346:17;2445:11;:19;;-1:-1:-1;;2445:19:10;;;2335:136;1346:17;36810:11:14::1;;;;;;;;;-1:-1:-1::0;;;;;36810:11:14::1;-1:-1:-1::0;;;;;36810:27:14::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36792:15;;:47;;;;;-1:-1:-1::0;;;;;36792:47:14::1;;;;;-1:-1:-1::0;;;;;36792:47:14::1;;;;;;36876:11;;;;;;;;;-1:-1:-1::0;;;;;36876:11:14::1;-1:-1:-1::0;;;;;36876:36:14::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36849:24;;:65;;;;;;;;;;;;;;;;;;36937:11;;;;;;;;;-1:-1:-1::0;;;;;36937:11:14::1;-1:-1:-1::0;;;;;36937:22:14::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36924:10;:37:::0;1384:20:10;2658:11;:18;;-1:-1:-1;;2658:18:10;2672:4;2658:18;;;2477:206;2143:186;2275:11;;;;2267:55;;;;-1:-1:-1;;;2267:55:10;;5239:2:22;2267:55:10;;;5221:21:22;5278:2;5258:18;;;5251:30;5317:33;5297:18;;;5290:61;5368:18;;2267:55:10;5037:355:22;1647:49553:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1647:49553:14;;;-1:-1:-1;1647:49553:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:22;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:22;247:40;;-1:-1:-1;;;;;302:34:22;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:22:o;426:695::-;480:5;533:3;526:4;518:6;514:17;510:27;500:55;;551:1;548;541:12;500:55;574:13;;-1:-1:-1;;;;;599:26:22;;596:52;;;628:18;;:::i;:::-;667:4;695:53;738:2;719:13;;-1:-1:-1;;715:27:22;711:36;;695:53;:::i;:::-;773:2;764:7;757:19;817:3;812:2;807;799:6;795:15;791:24;788:33;785:53;;;834:1;831;824:12;785:53;856:1;866:134;880:2;877:1;874:9;866:134;;;969:14;;;965:23;;959:30;937:15;;;933:24;;926:64;891:10;;866:134;;;1018:2;1015:1;1012:9;1009:81;;;1078:1;1073:2;1068;1059:7;1055:16;1051:25;1044:36;1009:81;-1:-1:-1;1108:7:22;426:695;-1:-1:-1;;;;;426:695:22:o;1126:177::-;1205:13;;-1:-1:-1;;;;;1247:31:22;;1237:42;;1227:70;;1293:1;1290;1283:12;1227:70;1126:177;;;:::o;1308:175::-;1386:13;;-1:-1:-1;;;;;1428:30:22;;1418:41;;1408:69;;1473:1;1470;1463:12;1488:1058;1628:6;1636;1644;1652;1660;1668;1676;1729:3;1717:9;1708:7;1704:23;1700:33;1697:53;;;1746:1;1743;1736:12;1697:53;1773:16;;-1:-1:-1;;;;;1838:14:22;;;1835:34;;;1865:1;1862;1855:12;1835:34;1888:61;1941:7;1932:6;1921:9;1917:22;1888:61;:::i;:::-;1878:71;;1995:2;1984:9;1980:18;1974:25;1958:41;;2024:2;2014:8;2011:16;2008:36;;;2040:1;2037;2030:12;2008:36;;2063:63;2118:7;2107:8;2096:9;2092:24;2063:63;:::i;:::-;2053:73;;;2145:49;2190:2;2179:9;2175:18;2145:49;:::i;:::-;2135:59;;2213:49;2258:2;2247:9;2243:18;2213:49;:::i;:::-;2203:59;;2281:49;2325:3;2314:9;2310:19;2281:49;:::i;:::-;2271:59;;2373:3;2362:9;2358:19;2352:26;2421:5;2414:13;2407:21;2400:5;2397:32;2387:60;;2443:1;2440;2433:12;2387:60;2466:5;-1:-1:-1;2490:50:22;2535:3;2520:19;;2490:50;:::i;:::-;2480:60;;1488:1058;;;;;;;;;;:::o;3112:184::-;3182:6;3235:2;3223:9;3214:7;3210:23;3206:32;3203:52;;;3251:1;3248;3241:12;3203:52;-1:-1:-1;3274:16:22;;3112:184;-1:-1:-1;3112:184:22:o;3301:208::-;3371:6;3424:2;3412:9;3403:7;3399:23;3395:32;3392:52;;;3440:1;3437;3430:12;3392:52;3463:40;3493:9;3463:40;:::i;:::-;3453:50;3301:208;-1:-1:-1;;;3301:208:22:o;3904:443::-;4000:6;4053:2;4041:9;4032:7;4028:23;4024:32;4021:52;;;4069:1;4066;4059:12;4021:52;4102:2;4096:9;4144:2;4132:15;;-1:-1:-1;;;;;4162:34:22;;4198:22;;;4159:62;4156:88;;;4224:18;;:::i;:::-;4260:2;4253:22;4299:16;;4284:32;;-1:-1:-1;4291:6:22;3904:443;-1:-1:-1;3904:443:22:o;4352:206::-;4421:6;4474:2;4462:9;4453:7;4449:23;4445:32;4442:52;;;4490:1;4487;4480:12;4442:52;4513:39;4542:9;4513:39;:::i;4563:280::-;4632:6;4685:2;4673:9;4664:7;4660:23;4656:32;4653:52;;;4701:1;4698;4691:12;4653:52;4733:9;4727:16;4783:10;4776:5;4772:22;4765:5;4762:33;4752:61;;4809:1;4806;4799:12;5397:380;5476:1;5472:12;;;;5519;;;5540:61;;5594:4;5586:6;5582:17;5572:27;;5540:61;5647:2;5639:6;5636:14;5616:18;5613:38;5610:161;;;5693:10;5688:3;5684:20;5681:1;5674:31;5728:4;5725:1;5718:15;5756:4;5753:1;5746:15;5610:161;;5397:380;;;:::o;:::-;1647:49553:14;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_5949": {
                                    "entryPoint": null,
                                    "id": 5949,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_allocateLpFees_5665": {
                                    "entryPoint": 12543,
                                    "id": 5665,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_approve_494": {
                                    "entryPoint": 10716,
                                    "id": 494,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_beforeTokenTransfer_505": {
                                    "entryPoint": null,
                                    "id": 505,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_burn_449": {
                                    "entryPoint": 12714,
                                    "id": 449,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_callOptionalReturn_832": {
                                    "entryPoint": 14415,
                                    "id": 832,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_exchangeRateCurrent_5498": {
                                    "entryPoint": 12594,
                                    "id": 5498,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_getAccumulatedFees_5625": {
                                    "entryPoint": 13272,
                                    "id": 5625,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_getAmountFromPct_5682": {
                                    "entryPoint": 12140,
                                    "id": 5682,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@_getDepositHash_5715": {
                                    "entryPoint": 11009,
                                    "id": 5715,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_getInstantRelayHash_5596": {
                                    "entryPoint": 12180,
                                    "id": 5596,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@_getProposerBond_5695": {
                                    "entryPoint": 11076,
                                    "id": 5695,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_getRelayAncillaryData_5513": {
                                    "entryPoint": 11466,
                                    "id": 5513,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_getRelayDataHash_5556": {
                                    "entryPoint": 11108,
                                    "id": 5556,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_getRelayHash_5540": {
                                    "entryPoint": 11127,
                                    "id": 5540,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@_liquidityUtilizationPostRelay_5420": {
                                    "entryPoint": 11324,
                                    "id": 5420,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_mint_387": {
                                    "entryPoint": 13049,
                                    "id": 387,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1140": {
                                    "entryPoint": null,
                                    "id": 1140,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_postEntranceReset_3629": {
                                    "entryPoint": 10701,
                                    "id": 3629,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_3613": {
                                    "entryPoint": 10607,
                                    "id": 3613,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_3621": {
                                    "entryPoint": 10689,
                                    "id": 3621,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_requestProposeDispute_5905": {
                                    "entryPoint": 13391,
                                    "id": 5905,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "@_sync_5454": {
                                    "entryPoint": 14220,
                                    "id": 5454,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_transfer_340": {
                                    "entryPoint": 11527,
                                    "id": 340,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_unwrapWETHTo_5945": {
                                    "entryPoint": 12223,
                                    "id": 5945,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_updateAccumulatedLpFees_5648": {
                                    "entryPoint": 12472,
                                    "id": 5648,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_validateRelayDataHash_5576": {
                                    "entryPoint": 11999,
                                    "id": 5576,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_verifyCallResult_1128": {
                                    "entryPoint": 15854,
                                    "id": 1128,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@addLiquidity_4226": {
                                    "entryPoint": 6487,
                                    "id": 4226,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@allowance_137": {
                                    "entryPoint": null,
                                    "id": 137,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@appendKeyValueBytes32_1846": {
                                    "entryPoint": 14625,
                                    "id": 1846,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@approve_158": {
                                    "entryPoint": 2886,
                                    "id": 158,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@balanceOf_98": {
                                    "entryPoint": null,
                                    "id": 98,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@bonds_3904": {
                                    "entryPoint": null,
                                    "id": 3904,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@bridgeAdmin_3907": {
                                    "entryPoint": null,
                                    "id": 3907,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@changeAdmin_5296": {
                                    "entryPoint": 8154,
                                    "id": 5296,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@constructPrefix_1935": {
                                    "entryPoint": 15010,
                                    "id": 1935,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@decimals_74": {
                                    "entryPoint": null,
                                    "id": 74,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@decreaseAllowance_270": {
                                    "entryPoint": 8312,
                                    "id": 270,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@disputeRelay_4619": {
                                    "entryPoint": 10027,
                                    "id": 4619,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@exchangeRateCurrent_5151": {
                                    "entryPoint": 9501,
                                    "id": 5151,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@functionCallWithValue_994": {
                                    "entryPoint": 15140,
                                    "id": 994,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "@functionCall_924": {
                                    "entryPoint": 14987,
                                    "id": 924,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@getAccumulatedFees_5348": {
                                    "entryPoint": 6907,
                                    "id": 5348,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@getCurrentTime_3789": {
                                    "entryPoint": 4263,
                                    "id": 3789,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@getLiquidityUtilization_5200": {
                                    "entryPoint": 10520,
                                    "id": 5200,
                                    "parameterSlots": 1,
                                    "returnSlots": 2
                                },
                                "@getRelayAncillaryData_5370": {
                                    "entryPoint": 3783,
                                    "id": 5370,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@identifier_3915": {
                                    "entryPoint": null,
                                    "id": 3915,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@increaseAllowance_232": {
                                    "entryPoint": 4423,
                                    "id": 232,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@instantRelays_3960": {
                                    "entryPoint": null,
                                    "id": 3960,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@isContract_853": {
                                    "entryPoint": null,
                                    "id": 853,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@isWethPool_3887": {
                                    "entryPoint": null,
                                    "id": 3887,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@l1Token_3877": {
                                    "entryPoint": null,
                                    "id": 3877,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@lastLpFeeUpdate_3894": {
                                    "entryPoint": null,
                                    "id": 3894,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@liquidReserves_3881": {
                                    "entryPoint": null,
                                    "id": 3881,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@liquidityUtilizationCurrent_5164": {
                                    "entryPoint": 3742,
                                    "id": 5164,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@liquidityUtilizationPostRelay_5179": {
                                    "entryPoint": 6925,
                                    "id": 5179,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@lpFeeRatePerSecond_3892": {
                                    "entryPoint": null,
                                    "id": 3892,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@multicall_3716": {
                                    "entryPoint": 8480,
                                    "id": 3716,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@name_54": {
                                    "entryPoint": 2581,
                                    "id": 54,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@numberOfRelays_3879": {
                                    "entryPoint": null,
                                    "id": 3879,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@optimisticOracleLiveness_3898": {
                                    "entryPoint": null,
                                    "id": 3898,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@optimisticOracle_3913": {
                                    "entryPoint": null,
                                    "id": 3913,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@pendingReserves_3885": {
                                    "entryPoint": null,
                                    "id": 3885,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@proposerBondPct_3896": {
                                    "entryPoint": null,
                                    "id": 3896,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@relayAndSpeedUp_4514": {
                                    "entryPoint": 6967,
                                    "id": 4514,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@relayDeposit_4758": {
                                    "entryPoint": 2909,
                                    "id": 4758,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@relaysEnabled_3890": {
                                    "entryPoint": null,
                                    "id": 3890,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@relays_3956": {
                                    "entryPoint": null,
                                    "id": 3956,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@removeLiquidity_4301": {
                                    "entryPoint": 6110,
                                    "id": 4301,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@safeApprove_710": {
                                    "entryPoint": 14695,
                                    "id": 710,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@safeTransferFrom_666": {
                                    "entryPoint": 11211,
                                    "id": 666,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@safeTransfer_640": {
                                    "entryPoint": 12424,
                                    "id": 640,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@setCurrentTime_3764": {
                                    "entryPoint": 3818,
                                    "id": 3764,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setLpFeeRatePerSecond_5316": {
                                    "entryPoint": 4113,
                                    "id": 5316,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setRelaysEnabled_5336": {
                                    "entryPoint": 2727,
                                    "id": 5336,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@settleRelay_5129": {
                                    "entryPoint": 4979,
                                    "id": 5129,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@speedUpRelay_4882": {
                                    "entryPoint": 9527,
                                    "id": 4882,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@store_3910": {
                                    "entryPoint": null,
                                    "id": 3910,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@symbol_64": {
                                    "entryPoint": 8297,
                                    "id": 64,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@syncUmaEcosystemParams_5247": {
                                    "entryPoint": 8901,
                                    "id": 5247,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@syncWithBridgeAdminParams_5272": {
                                    "entryPoint": 4478,
                                    "id": 5272,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@sync_5139": {
                                    "entryPoint": 10575,
                                    "id": 5139,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@timerAddress_3723": {
                                    "entryPoint": null,
                                    "id": 3723,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@toUtf8Bytes32Bottom_1671": {
                                    "entryPoint": 15436,
                                    "id": 1671,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@toUtf8Bytes_1692": {
                                    "entryPoint": 15076,
                                    "id": 1692,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@totalSupply_84": {
                                    "entryPoint": null,
                                    "id": 84,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@transferFrom_205": {
                                    "entryPoint": 3936,
                                    "id": 205,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@transfer_119": {
                                    "entryPoint": 8467,
                                    "id": 119,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@undistributedLpFees_3902": {
                                    "entryPoint": null,
                                    "id": 3902,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@utilizedReserves_3883": {
                                    "entryPoint": null,
                                    "id": 3883,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 16082,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_struct_DepositData": {
                                    "entryPoint": 16260,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 16847,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 18313,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_address": {
                                    "entryPoint": 17090,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256": {
                                    "entryPoint": 16716,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_uint256": {
                                    "entryPoint": 16093,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                                    "entryPoint": 16876,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_bool": {
                                    "entryPoint": 16032,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bool_fromMemory": {
                                    "entryPoint": 18935,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32_fromMemory": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                                    "entryPoint": 18125,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_struct$_RelayData_$3952_memory_ptr": {
                                    "entryPoint": 16508,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_uint64": {
                                    "entryPoint": 16450,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory": {
                                    "entryPoint": 18342,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 16691,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": 17687,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256t_bool": {
                                    "entryPoint": 16810,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_uint32_fromMemory": {
                                    "entryPoint": 17741,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64": {
                                    "entryPoint": 16781,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64_fromMemory": {
                                    "entryPoint": 17712,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint32": {
                                    "entryPoint": 16249,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 16220,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_address": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_bool": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_string": {
                                    "entryPoint": 15955,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_struct_DepositData": {
                                    "entryPoint": 17377,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_struct_RelayData": {
                                    "entryPoint": 17493,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 18109,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 19120,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 18964,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 19083,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_string_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 19031,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 16992,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_contract$_IERC20_$584_t_rational_0_by_1_t_uint256_t_uint32_t_address_t_int256__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_address_t_uint256_t_uint256_t_uint256_t_address_t_int256__fromStack_reversed": {
                                    "entryPoint": 18579,
                                    "id": null,
                                    "parameterSlots": 10,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__fromStack_reversed": {
                                    "entryPoint": 18686,
                                    "id": null,
                                    "parameterSlots": 7,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_BridgeAdminInterface_$6109__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_IERC20_$584__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_SkinnyOptimisticOracleInterface_$6650__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_StoreInterface_$6695__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 15999,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_014e645e7f8031a206f3b5a5e54294e512399b30b942040cdefea4c386ac4c2c__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_140eb91724df70a0cee818ba517cecd0d75a058e9680b55981a9187bd7c49aba__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_1b9adfacf0e3713528db5d163499daffed51d205d476d1216aa03b51e5246b78__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_21c11d76539f521406afa6465d19dbc68951b755ccb3b86b975cbdb7c85590e0__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_343ea3fc08d6a86d9bb33bff5b89a4880beb2877c0758a5b9d28acf6f4331668__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_4d52a6da38278ead32cd9f33eb5cd33c43ec96fe5ce1bd6e71fb70656b4cbf2e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 17195,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_6d85c5f14fef91ee2d1e97a9ebbeb17234c6f1697165e89e66564bef6d66742d__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_6e21cb62d00f42c575e706905a321dbe03b2d3e18c1a8cd6dde1b236d44f9cb5__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_88329e000212abe98d559877c824675fd701dbb3e66db634ca25c1b6e368a147__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9c5c2898dfaf68f9d9f7da005f4e14e47b970b541fdaa53f62f755602f65f784__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c8ab8a2be779d9262c8a9592ba3da06668869724ea761c2b8bed96453f72b21e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_address__fromStack_reversed": {
                                    "entryPoint": 18407,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__to_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__fromStack_reversed": {
                                    "entryPoint": 17643,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__fromStack_reversed": {
                                    "entryPoint": 18447,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_RelayData_$3952_memory_ptr__to_t_struct$_RelayData_$3952_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 17909,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_uint32": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_uint64": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "access_calldata_tail_t_bytes_calldata_ptr": {
                                    "entryPoint": 18032,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "allocate_memory": {
                                    "entryPoint": 16159,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "checked_add_t_int256": {
                                    "entryPoint": 17844,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 17353,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint32": {
                                    "entryPoint": 17770,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint64": {
                                    "entryPoint": 17810,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_div_t_uint256": {
                                    "entryPoint": 17976,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_mul_t_uint256": {
                                    "entryPoint": 17923,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_int256": {
                                    "entryPoint": 18516,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint256": {
                                    "entryPoint": 17330,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 15911,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 17136,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint256": {
                                    "entryPoint": 18286,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint32": {
                                    "entryPoint": 17294,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 17272,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x12": {
                                    "entryPoint": 17954,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x21": {
                                    "entryPoint": 17250,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 18010,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 16137,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_address": {
                                    "entryPoint": 16061,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_bool": {
                                    "entryPoint": 16018,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_uint32": {
                                    "entryPoint": 16231,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_uint64": {
                                    "entryPoint": 16199,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:39093:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "67:205:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "77:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "86:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "81:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "146:63:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "171:3:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "176:1:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "167:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "167:11:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "190:3:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "195:1:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "186:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "186:11:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "180:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "180:18:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "160:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "160:39:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "160:39:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "107:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "110:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "104:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "104:13:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "118:19:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "120:15:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "129:1:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "132:2:22",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "125:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "125:10:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "120:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "100:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "96:113:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "235:31:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "248:3:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "253:6:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "244:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "244:16:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "262:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "237:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "237:27:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "237:27:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "224:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "227:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "221:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "221:13:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "218:48:22"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "45:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "50:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "55:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:258:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "327:208:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "337:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "357:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "351:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "351:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "341:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "379:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "384:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "372:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "372:19:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "372:19:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "426:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "433:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "422:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "422:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "444:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "449:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "440:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "440:14:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "456:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "400:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "400:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "400:63:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "472:57:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "487:3:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "500:6:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "508:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "496:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "496:15:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "517:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "513:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "513:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "492:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "492:29:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "483:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "483:39:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "524:4:22",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "479:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "479:50:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "472:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_string",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "304:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "311:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "319:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "277:258:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "661:99:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "678:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "689:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "671:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "671:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "671:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "701:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "727:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "739:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "750:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "735:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "735:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "709:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "709:45:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "701:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "630:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "641:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "652:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "540:220:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "807:76:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "861:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "870:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "873:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "863:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "863:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "863:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "830:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "851:5:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "844:6:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "844:13:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "837:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "837:21:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "827:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "827:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "820:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "820:40:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "817:60:22"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "796:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "765:118:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "955:174:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1001:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1010:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1013:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1003:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1003:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1003:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "976:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "985:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "972:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "972:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "997:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "968:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "968:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "965:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1026:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1052:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1039:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1039:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1030:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1093:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1071:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1071:28:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1071:28:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1108:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1118:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1108:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "921:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "932:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "944:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "888:241:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1179:86:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1243:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1252:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1255:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1245:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1245:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1245:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1202:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1213:5:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1228:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1233:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1224:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1224:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1237:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1220:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1220:19:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1209:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1209:31:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1199:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1199:42:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1192:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1192:50:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1189:70:22"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1168:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1134:131:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1319:85:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1329:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1351:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1338:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1338:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1329:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1392:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1367:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1367:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1367:31:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1298:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1309:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1270:134:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1496:228:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1542:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1551:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1554:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1544:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1544:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1544:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1517:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1526:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1513:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1513:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1538:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1509:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1509:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1506:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1567:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1593:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1580:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1580:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1571:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1637:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1612:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1612:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1612:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1652:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1662:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1652:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1676:42:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1703:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1714:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1699:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1699:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1686:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1686:32:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1676:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1454:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1465:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1477:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1485:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1409:315:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1770:50:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1787:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1806:5:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1799:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1799:13:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1792:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1792:21:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1780:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1780:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1780:34:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1754:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1761:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1729:91:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1920:92:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1930:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1942:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1953:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1938:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1938:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1930:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1972:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1997:6:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1990:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1990:14:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1983:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1983:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1965:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1965:41:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1965:41:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1889:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1900:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1911:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1825:187:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2060:59:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2077:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2086:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2093:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2082:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2082:30:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2070:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2070:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2070:43:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2044:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2051:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2017:102:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2223:101:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2233:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2245:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2256:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2241:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2241:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2233:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2275:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2290:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2298:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2286:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2286:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2268:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2268:50:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2268:50:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2192:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2203:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2214:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2124:200:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2361:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2378:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2385:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2390:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2381:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2381:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2371:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2371:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2371:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2418:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2421:4:22",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2411:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2411:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2411:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2442:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2445:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2435:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2435:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2435:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "2329:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2502:207:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2512:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2528:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2522:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2522:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2512:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2540:35:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2562:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2570:4:22",
                                                                        "type": "",
                                                                        "value": "0xe0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2558:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2558:17:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2544:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2650:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2652:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2652:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2652:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2593:10:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2605:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2590:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2590:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2629:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2641:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2626:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2626:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2587:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2587:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2584:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2688:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2692:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2681:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2681:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2681:22:22"
                                                        }
                                                    ]
                                                },
                                                "name": "allocate_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "returnVariables": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2491:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2461:248:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2758:85:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2821:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2830:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2833:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2823:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2823:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2823:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2781:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2792:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2799:18:22",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2788:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2788:30:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2778:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2778:41:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2771:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2771:49:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2768:69:22"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2747:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2714:129:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2896:84:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2906:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2928:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2915:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2915:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2906:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2968:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2944:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2944:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2944:30:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2875:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2886:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2848:132:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3029:77:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3084:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3093:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3096:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3086:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3086:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3086:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3052:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3063:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3070:10:22",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3059:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3059:22:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3049:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3049:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3042:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3042:41:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3039:61:22"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3018:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2985:121:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3159:84:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3169:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3191:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3178:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3178:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3169:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3231:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint32",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3207:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3207:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3207:30:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3138:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3149:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3111:132:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3316:932:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3326:16:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3336:6:22",
                                                                "type": "",
                                                                "value": "0x0100"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3330:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3383:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3392:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3395:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3385:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3385:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3385:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3362:3:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3367:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3358:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3358:19:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3379:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3354:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3354:28:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3351:48:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3408:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3428:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3422:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3422:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3412:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3440:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3462:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3470:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3458:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3458:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3444:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3548:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3550:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3550:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3550:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3491:10:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3503:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3488:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3488:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3527:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3539:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3524:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3524:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3485:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3485:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3482:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3586:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3590:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3579:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3579:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3579:22:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3610:15:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3619:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3610:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3641:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3662:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3649:12:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3649:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3634:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3634:39:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3634:39:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3682:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3714:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3725:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3710:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3710:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3697:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3697:32:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3686:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3762:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3738:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3738:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3738:32:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3790:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3798:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3786:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3786:15:22"
                                                                    },
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3803:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3779:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3779:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3779:32:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3831:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3839:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3827:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3827:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3867:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3878:2:22",
                                                                                        "type": "",
                                                                                        "value": "64"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3863:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3863:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_address",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3844:18:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3844:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3820:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3820:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3820:63:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3903:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3911:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3899:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3899:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3939:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3950:2:22",
                                                                                        "type": "",
                                                                                        "value": "96"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3935:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3935:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_address",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3916:18:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3916:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3892:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3892:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3892:63:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3975:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3983:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3971:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3971:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4006:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4017:3:22",
                                                                                        "type": "",
                                                                                        "value": "128"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4002:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4002:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3989:12:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3989:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3964:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3964:59:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3964:59:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4043:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4051:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4039:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4039:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4079:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4090:3:22",
                                                                                        "type": "",
                                                                                        "value": "160"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4075:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4075:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint64",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4057:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4057:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4032:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4032:64:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4032:64:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4116:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4124:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4112:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4112:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4152:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4163:3:22",
                                                                                        "type": "",
                                                                                        "value": "192"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4148:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4148:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint64",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4130:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4130:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4105:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4105:64:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4105:64:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4189:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4197:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4185:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4185:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4225:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4236:3:22",
                                                                                        "type": "",
                                                                                        "value": "224"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4221:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4221:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint32",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4203:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4203:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4178:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4178:64:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4178:64:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_struct_DepositData",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3287:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3298:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3306:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3248:1000:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4368:255:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4415:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4424:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4427:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4417:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4417:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4417:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4389:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4398:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4385:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4385:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4410:3:22",
                                                                        "type": "",
                                                                        "value": "288"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4381:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4381:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4378:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4440:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4480:9:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4491:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4450:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4450:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4440:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4508:46:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4538:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4549:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4534:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4534:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4521:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4521:33:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4512:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4587:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4563:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4563:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4563:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4602:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4612:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4602:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4326:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4337:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4349:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4357:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4253:370:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4729:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4739:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4751:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4762:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4747:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4747:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4739:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4781:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4792:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4774:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4774:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4774:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4698:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4709:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4720:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4628:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4853:51:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4870:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4879:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4886:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4875:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4875:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4863:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4863:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4863:35:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4837:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4844:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4810:94:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5008:93:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5018:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5030:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5041:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5026:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5026:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5018:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5060:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5075:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5083:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5071:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5071:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5053:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5053:42:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5053:42:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4977:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4988:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4999:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4909:192:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5249:837:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5259:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5273:7:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5282:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5269:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5269:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5263:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5317:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5326:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5329:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5319:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5319:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5319:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5308:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5312:3:22",
                                                                        "type": "",
                                                                        "value": "480"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5304:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5304:12:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5301:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5342:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5382:9:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5393:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5352:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5352:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5342:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5442:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5451:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5454:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5444:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5444:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5444:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5421:2:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5429:3:22",
                                                                                        "type": "",
                                                                                        "value": "255"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "not",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5425:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5425:8:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5417:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5417:17:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5436:4:22",
                                                                        "type": "",
                                                                        "value": "0xe0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5413:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5413:28:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5410:48:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5467:30:22",
                                                            "value": {
                                                                "arguments": [],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5480:15:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5480:17:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5471:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5506:48:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5538:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5549:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5534:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5534:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5521:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5521:33:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5510:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5589:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5598:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5601:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5591:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5591:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5591:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5576:7:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5585:1:22",
                                                                                "type": "",
                                                                                "value": "3"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5573:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5573:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5566:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5566:22:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5563:42:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5621:5:22"
                                                                    },
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5628:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5614:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5614:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5614:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5656:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5663:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5652:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5652:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5691:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5702:3:22",
                                                                                        "type": "",
                                                                                        "value": "288"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5687:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5687:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_address",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5668:18:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5668:39:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5645:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5645:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5645:63:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5728:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5735:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5724:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5724:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5762:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5773:3:22",
                                                                                        "type": "",
                                                                                        "value": "320"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5758:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5758:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint32",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5740:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5740:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5717:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5717:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5717:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5799:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5806:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5795:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5795:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5833:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5844:3:22",
                                                                                        "type": "",
                                                                                        "value": "352"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5829:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5829:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint64",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5811:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5811:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5788:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5788:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5788:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5870:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5877:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5866:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5866:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5905:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5916:3:22",
                                                                                        "type": "",
                                                                                        "value": "384"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5901:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5901:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint32",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5883:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5883:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5859:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5859:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5859:63:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5942:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5949:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5938:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5938:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5972:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5983:3:22",
                                                                                        "type": "",
                                                                                        "value": "416"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5968:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5968:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5955:12:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5955:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5931:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5931:58:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5931:58:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6009:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6016:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6005:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6005:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6039:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6050:3:22",
                                                                                        "type": "",
                                                                                        "value": "448"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6035:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6035:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6022:12:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6022:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5998:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5998:58:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5998:58:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6065:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6075:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6065:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_struct$_RelayData_$3952_memory_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5207:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5218:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5230:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5238:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5106:980:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6210:99:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6227:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6238:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6220:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6220:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6220:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6250:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6276:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6288:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6299:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6284:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6284:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6258:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6258:45:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6250:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6179:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6190:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6201:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6091:218:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6358:60:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6375:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6384:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6399:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6404:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6395:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6395:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6408:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6391:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6391:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6380:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6380:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6368:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6368:44:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6368:44:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6342:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6349:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6314:104:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6524:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6534:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6546:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6557:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6542:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6542:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6534:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6576:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6591:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6607:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6612:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6603:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6603:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6616:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6599:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6599:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6587:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6587:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6569:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6569:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6569:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6493:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6504:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6515:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6423:203:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6772:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6782:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6794:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6805:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6790:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6790:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6782:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6824:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6839:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6855:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6860:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6851:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6851:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6864:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6847:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6847:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6835:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6835:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6817:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6817:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6817:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_SkinnyOptimisticOracleInterface_$6650__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6741:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6752:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6763:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6631:243:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6949:110:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6995:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7004:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7007:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6997:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6997:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6997:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6970:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6979:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6966:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6966:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6991:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6962:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6962:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6959:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7020:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7043:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7030:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7030:23:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7020:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6915:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6926:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6938:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6879:180:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7168:352:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7214:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7223:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7226:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7216:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7216:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7216:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7189:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7198:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7185:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7185:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7210:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7181:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7181:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7178:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7239:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7265:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7252:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7252:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7243:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7309:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7284:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7284:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7284:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7324:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7334:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7324:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7348:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7380:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7391:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7376:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7376:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7363:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7363:32:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7352:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7429:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7404:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7404:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7404:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7446:17:22",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7456:7:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7446:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7472:42:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7499:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7510:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7495:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7495:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7482:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7482:32:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7472:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7118:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7129:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7141:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7149:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7157:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7064:456:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7594:176:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7640:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7649:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7652:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7642:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7642:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7642:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7615:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7624:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7611:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7611:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7636:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7607:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7607:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7604:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7665:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7691:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7678:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7678:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7669:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7734:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7710:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7710:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7710:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7749:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7759:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7749:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7560:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7571:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7583:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7525:245:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7872:87:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7882:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7894:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7905:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7890:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7890:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7882:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7924:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7939:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7947:4:22",
                                                                                "type": "",
                                                                                "value": "0xff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7935:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7935:17:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7917:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7917:36:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7917:36:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7841:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7852:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7863:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7775:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8048:225:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "8094:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8103:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8106:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8096:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8096:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8096:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8069:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8078:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8065:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8065:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8090:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8061:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8061:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "8058:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8119:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8142:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8129:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8129:23:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8119:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8161:45:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8191:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8202:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8187:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8187:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8174:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8174:32:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8165:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8237:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8215:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8215:28:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8215:28:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8252:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8262:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8252:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256t_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8006:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8017:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8029:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8037:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7964:309:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8377:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8387:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8399:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8410:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8395:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8395:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8387:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8429:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8440:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8422:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8422:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8422:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8346:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8357:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8368:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8278:175:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8528:177:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "8574:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8583:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8586:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8576:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8576:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8576:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8549:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8558:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8545:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8545:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8570:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8541:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8541:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "8538:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8599:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8625:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8612:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8612:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8603:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8669:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8644:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8644:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8644:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8684:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8694:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8684:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8494:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8505:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8517:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8458:247:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8811:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8821:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8833:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8844:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8829:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8829:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8821:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8863:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8874:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8856:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8856:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8856:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8780:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8791:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8802:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8710:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9016:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9026:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9038:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9049:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9034:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9034:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9026:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9068:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9083:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9099:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9104:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "9095:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "9095:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "9108:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9091:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9091:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9079:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9079:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9061:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9061:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9061:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_StoreInterface_$6695__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8985:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8996:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9007:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8892:226:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9253:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9263:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9275:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9286:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9271:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9271:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9263:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9305:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9320:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9336:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9341:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "9332:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "9332:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "9345:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9328:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9328:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9316:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9316:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9298:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9298:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9298:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_BridgeAdminInterface_$6109__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9222:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9233:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9244:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9123:232:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9476:510:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9522:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9531:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9534:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9524:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9524:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9524:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9497:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9506:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9493:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9493:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9518:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9489:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9489:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9486:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9547:37:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9574:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9561:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9561:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9551:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9593:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9603:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9597:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9648:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9657:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9660:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9650:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9650:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9650:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9636:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9644:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9633:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9633:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9630:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9673:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9687:9:22"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9698:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9683:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9683:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9677:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9753:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9762:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9765:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9755:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9755:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9755:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "9732:2:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "9736:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9728:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9728:13:22"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9743:7:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9724:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9724:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9717:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9717:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9714:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9778:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9805:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9792:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9792:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9782:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9835:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9844:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9847:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9837:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9837:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9837:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9823:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9831:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9820:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9820:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9817:34:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9909:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9918:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9921:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9911:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9911:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9911:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "9874:2:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9882:1:22",
                                                                                                "type": "",
                                                                                                "value": "5"
                                                                                            },
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "9885:6:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "9878:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "9878:14:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9870:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9870:23:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9895:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9866:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9866:32:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9900:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9863:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9863:45:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9860:65:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9934:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9948:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9952:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9944:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9944:11:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9934:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9964:16:22",
                                                            "value": {
                                                                "name": "length",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9974:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9964:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9434:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9445:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9457:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9465:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9360:626:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10160:632:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10170:12:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10180:2:22",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10174:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10191:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10209:9:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10220:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10205:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10205:18:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10195:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10239:9:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10250:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10232:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10232:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10232:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10262:17:22",
                                                            "value": {
                                                                "name": "tail_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10273:6:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10266:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10288:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10308:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10302:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10302:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10292:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "tail_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10331:6:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10339:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10324:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10324:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10324:22:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10355:25:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10366:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10377:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10362:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10362:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10355:3:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10389:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10411:9:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "10426:1:22",
                                                                                        "type": "",
                                                                                        "value": "5"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10429:6:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10422:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "10422:14:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10407:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10407:30:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10439:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10403:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10403:39:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10393:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10451:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10469:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10477:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10465:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10465:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10455:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10489:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10498:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10493:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10557:206:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10578:3:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "tail_2",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "10591:6:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "10599:9:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "sub",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "10587:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "10587:22:22"
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "kind": "number",
                                                                                                    "nodeType": "YulLiteral",
                                                                                                    "src": "10615:2:22",
                                                                                                    "type": "",
                                                                                                    "value": "63"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "not",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "10611:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "10611:7:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10583:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "10583:36:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10571:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10571:49:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "10571:49:22"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10633:50:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "srcPtr",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "10667:6:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10661:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "10661:13:22"
                                                                                },
                                                                                {
                                                                                    "name": "tail_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10676:6:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "abi_encode_string",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10643:17:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10643:40:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "tail_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10633:6:22"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10696:25:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "srcPtr",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10710:6:22"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10718:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10706:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10706:15:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "srcPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10696:6:22"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10734:19:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10745:3:22"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10750:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10741:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10741:12:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10734:3:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10519:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10522:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10516:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10516:13:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10530:18:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10532:14:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10541:1:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10544:1:22",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10537:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10537:9:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10532:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10512:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "10508:255:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10772:14:22",
                                                            "value": {
                                                                "name": "tail_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10780:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10772:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10129:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10140:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10151:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9991:801:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10867:110:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10913:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10922:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10925:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10915:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10915:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "10915:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10888:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10897:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10884:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10884:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10909:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10880:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10880:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "10877:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10938:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10961:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10948:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10948:23:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10938:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10833:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10844:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10856:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10797:180:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11097:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11107:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11119:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11130:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11115:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11115:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11107:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11149:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11164:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "11180:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "11185:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "11176:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "11176:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "11189:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "11172:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "11172:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11160:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11160:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11142:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11142:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11142:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_IERC20_$584__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11066:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11077:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11088:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10982:217:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11291:301:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11337:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "11346:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "11349:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11339:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11339:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11339:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11312:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11321:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11308:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11308:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11333:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11304:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11304:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11301:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11362:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11388:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11375:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11375:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11366:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11432:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11407:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11407:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11407:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11447:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11457:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11447:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11471:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11503:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11514:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11499:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11499:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11486:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11486:32:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11475:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11552:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11527:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11527:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11527:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11569:17:22",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11579:7:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11569:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11249:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11260:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11272:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11280:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11204:388:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11726:119:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11736:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11748:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11759:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11744:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11744:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11736:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11778:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11789:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11771:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11771:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11771:25:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11816:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11827:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11812:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11812:18:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11832:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11805:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11805:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11805:34:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11687:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11698:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11706:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11717:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11597:248:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11905:325:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11915:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11929:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11932:4:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11925:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11925:12:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11915:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11946:38:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11976:4:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11982:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11972:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11972:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11950:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "12023:31:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "12025:27:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12039:6:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12047:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12035:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12035:17:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12025:6:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12003:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11996:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11996:26:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11993:61:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "12113:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12134:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "12141:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "12146:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "12137:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "12137:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12127:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12127:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "12127:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12178:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12181:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12171:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12171:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "12171:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12206:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12209:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12199:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12199:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "12199:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12069:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12092:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12100:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12089:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12089:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12066:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12066:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "12063:161:22"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11885:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11894:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11850:380:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12409:173:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12426:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12437:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12419:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12419:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12419:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12460:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12471:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12456:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12456:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12476:2:22",
                                                                        "type": "",
                                                                        "value": "23"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12449:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12449:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12449:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12499:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12510:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12495:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12495:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "43616c6c6572206e6f74206272696467652061646d696e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12515:25:22",
                                                                        "type": "",
                                                                        "value": "Caller not bridge admin"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12488:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12488:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12488:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12550:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12562:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12573:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12558:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12558:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12550:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_4d52a6da38278ead32cd9f33eb5cd33c43ec96fe5ce1bd6e71fb70656b4cbf2e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12386:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12400:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12235:347:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12761:169:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12778:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12789:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12771:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12771:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12771:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12812:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12823:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12808:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12808:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12828:2:22",
                                                                        "type": "",
                                                                        "value": "19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12801:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12801:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12801:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12851:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12862:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12847:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12847:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "52656c617973206172652064697361626c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12867:21:22",
                                                                        "type": "",
                                                                        "value": "Relays are disabled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12840:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12840:49:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12840:49:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12898:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12910:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12921:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12906:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12906:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12898:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_88329e000212abe98d559877c824675fd701dbb3e66db634ca25c1b6e368a147__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12738:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12752:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12587:343:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13109:162:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13126:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13137:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13119:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13119:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13119:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13160:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13171:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13156:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13156:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13176:2:22",
                                                                        "type": "",
                                                                        "value": "12"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13149:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13149:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13149:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13199:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13210:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13195:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13195:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "496e76616c69642066656573",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13215:14:22",
                                                                        "type": "",
                                                                        "value": "Invalid fees"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13188:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13188:42:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13188:42:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13239:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13251:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13262:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13247:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13247:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13239:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13086:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13100:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12935:336:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13450:170:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13467:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13478:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13460:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13460:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13460:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13501:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13512:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13497:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13497:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13517:2:22",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13490:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13490:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13490:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13540:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13551:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13536:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13536:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "50656e64696e672072656c617920657869737473",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13556:22:22",
                                                                        "type": "",
                                                                        "value": "Pending relay exists"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13529:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13529:50:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13529:50:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13588:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13600:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13611:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13596:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13596:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13588:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13427:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13441:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13276:344:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13657:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13674:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13681:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13686:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13677:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13677:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13667:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13667:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13667:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13714:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13717:4:22",
                                                                        "type": "",
                                                                        "value": "0x21"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13707:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13707:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13707:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13738:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13741:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13731:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13731:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13731:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x21",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "13625:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13789:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13806:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13813:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13818:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13809:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13809:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13799:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13799:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13799:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13846:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13849:4:22",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13839:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13839:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13839:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13870:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13873:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13863:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13863:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13863:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "13757:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13935:155:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13945:20:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "13955:10:22",
                                                                "type": "",
                                                                "value": "0xffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13949:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13974:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13993:5:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14000:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13989:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13989:14:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13978:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14031:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14033:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14033:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14033:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14018:7:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14027:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14015:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14015:15:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14012:41:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14062:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14073:7:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14082:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14069:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14069:15:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14062:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13917:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13927:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13889:201:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14144:76:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14166:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14168:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14168:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14168:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14160:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14163:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14157:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14157:8:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14154:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14197:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14209:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14212:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14205:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14205:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14197:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14126:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14129:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14135:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14095:125:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14399:175:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14416:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14427:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14409:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14409:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14409:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14450:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14461:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14446:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14446:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14466:2:22",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14439:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14439:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14439:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14489:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14500:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14485:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14485:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "496e73756666696369656e7420706f6f6c2062616c616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14505:27:22",
                                                                        "type": "",
                                                                        "value": "Insufficient pool balance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14478:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14478:55:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14478:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14542:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14554:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14565:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14550:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14550:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14542:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14376:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14390:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14225:349:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14627:80:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14654:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14656:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14656:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14656:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14643:1:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14650:1:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14646:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14646:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14640:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14640:13:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14637:39:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14685:16:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14696:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14699:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14692:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14692:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14685:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14610:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14613:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14619:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14579:128:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14767:656:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14784:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14795:5:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14789:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14789:12:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14777:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14777:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14777:25:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14811:43:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14841:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14848:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14837:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14837:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14831:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14831:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14815:12:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14863:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "14873:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14867:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14911:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14916:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14907:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14907:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memberValue0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14927:12:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14941:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14923:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14923:21:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14900:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14900:45:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14900:45:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14954:45:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14986:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14993:4:22",
                                                                                "type": "",
                                                                                "value": "0x40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14982:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14982:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14976:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14976:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14958:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15008:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15026:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15031:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15022:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15022:11:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15035:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15018:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15018:19:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15012:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15057:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15062:4:22",
                                                                                "type": "",
                                                                                "value": "0x40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15053:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15053:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memberValue0_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15073:14:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15089:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15069:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15069:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15046:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15046:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15046:47:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15113:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15118:4:22",
                                                                                "type": "",
                                                                                "value": "0x60"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15109:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15109:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15139:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15146:4:22",
                                                                                                "type": "",
                                                                                                "value": "0x60"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15135:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15135:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15129:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15129:23:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15154:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15125:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15125:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15102:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15102:56:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15102:56:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15178:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15183:4:22",
                                                                                "type": "",
                                                                                "value": "0x80"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15174:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15174:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "15200:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "15207:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x80"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15196:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15196:16:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15190:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15190:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15167:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15167:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15167:47:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15234:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15239:4:22",
                                                                                "type": "",
                                                                                "value": "0xa0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15230:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15230:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15260:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15267:4:22",
                                                                                                "type": "",
                                                                                                "value": "0xa0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15256:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15256:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15250:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15250:23:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15275:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15246:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15246:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15223:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15223:56:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15223:56:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15299:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15304:4:22",
                                                                                "type": "",
                                                                                "value": "0xc0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15295:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15295:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15325:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15332:4:22",
                                                                                                "type": "",
                                                                                                "value": "0xc0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15321:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15321:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15315:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15315:23:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15340:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15311:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15311:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15288:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15288:56:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15288:56:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15364:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15369:4:22",
                                                                                "type": "",
                                                                                "value": "0xe0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15360:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15360:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15390:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15397:4:22",
                                                                                                "type": "",
                                                                                                "value": "0xe0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15386:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15386:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15380:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15380:23:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15405:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15376:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15376:40:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15353:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15353:64:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15353:64:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_struct_DepositData",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14751:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14758:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14712:711:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15481:737:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15491:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15507:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15501:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15501:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15495:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "15551:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15572:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "15579:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "15584:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "15575:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "15575:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15565:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "15565:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "15565:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15616:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15619:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x21"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15609:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "15609:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "15609:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15644:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15647:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15637:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "15637:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "15637:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15535:2:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15539:1:22",
                                                                                "type": "",
                                                                                "value": "3"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15532:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15532:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15525:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15525:17:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "15522:140:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15678:3:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15683:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15671:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15671:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15671:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15706:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15711:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15702:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15702:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15732:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15739:4:22",
                                                                                                "type": "",
                                                                                                "value": "0x20"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15728:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15728:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15722:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15722:23:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15755:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15760:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15751:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15751:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "15764:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15747:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15747:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15718:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15718:49:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15695:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15695:73:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15695:73:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15777:43:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15807:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15814:4:22",
                                                                                "type": "",
                                                                                "value": "0x40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15803:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15803:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15797:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15797:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15781:12:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15847:12:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15865:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15870:4:22",
                                                                                "type": "",
                                                                                "value": "0x40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15861:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15861:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_uint32",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15829:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15829:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15829:47:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15885:45:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15917:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15924:4:22",
                                                                                "type": "",
                                                                                "value": "0x60"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15913:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15913:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15907:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15907:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15889:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15957:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15977:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15982:4:22",
                                                                                "type": "",
                                                                                "value": "0x60"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15973:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15973:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15939:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15939:49:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15939:49:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15997:45:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16029:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16036:4:22",
                                                                                "type": "",
                                                                                "value": "0x80"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16025:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16025:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16019:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16019:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "16001:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16069:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16089:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16094:4:22",
                                                                                "type": "",
                                                                                "value": "0x80"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16085:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16085:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_uint32",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16051:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16051:49:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16051:49:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16120:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16125:4:22",
                                                                                "type": "",
                                                                                "value": "0xa0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16116:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16116:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "16142:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "16149:4:22",
                                                                                        "type": "",
                                                                                        "value": "0xa0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "16138:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "16138:16:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16132:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16132:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16109:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16109:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16109:47:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16176:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16181:4:22",
                                                                                "type": "",
                                                                                "value": "0xc0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16172:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16172:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "16198:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "16205:4:22",
                                                                                        "type": "",
                                                                                        "value": "0xc0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "16194:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "16194:16:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16188:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16188:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16165:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16165:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16165:47:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_struct_RelayData",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15465:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15472:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15428:790:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "16492:209:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "16502:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16514:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16525:3:22",
                                                                        "type": "",
                                                                        "value": "512"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16510:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16510:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16502:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16568:6:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16576:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16538:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16538:48:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16538:48:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16623:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16635:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16646:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16631:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16631:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_RelayData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16595:27:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16595:56:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16595:56:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16671:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16682:3:22",
                                                                                "type": "",
                                                                                "value": "480"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16667:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16667:19:22"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16688:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16660:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16660:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16660:35:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__to_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16445:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16456:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16464:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16472:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16483:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "16223:478:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "16880:230:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16897:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16908:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16890:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16890:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16890:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16931:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16942:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16927:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16927:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16947:2:22",
                                                                        "type": "",
                                                                        "value": "40"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16920:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16920:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16920:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16970:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16981:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16966:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16966:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16986:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer amount exceeds a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16959:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16959:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16959:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17041:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "17052:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17037:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17037:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6c6c6f77616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17057:10:22",
                                                                        "type": "",
                                                                        "value": "llowance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17030:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17030:38:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17030:38:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17077:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17089:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17100:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17085:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17085:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17077:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16857:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16871:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "16706:404:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17196:103:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17242:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17251:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17254:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17244:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17244:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17244:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17217:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17226:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17213:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17213:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17238:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17209:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17209:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17206:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17267:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17283:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17277:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17277:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17267:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17162:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17173:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17185:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17115:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17384:169:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17430:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17439:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17442:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17432:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17432:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17432:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17405:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17414:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17401:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17401:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17426:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17397:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17397:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17394:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "17455:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17474:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17468:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17468:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "17459:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17517:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17493:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17493:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17493:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17532:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "17542:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17532:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17350:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17361:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17373:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17304:249:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17638:169:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17684:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17693:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17696:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17686:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17686:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17686:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17659:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17668:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17655:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17655:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17680:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17651:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17651:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17648:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "17709:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17728:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17722:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17722:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "17713:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17771:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint32",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17747:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17747:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17747:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17786:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "17796:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17786:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17604:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17615:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17627:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17558:249:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17893:103:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17939:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17948:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17951:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17941:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17941:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17941:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17914:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17923:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17910:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17910:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17935:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17906:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17906:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17903:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17964:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17980:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17974:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17974:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17964:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17859:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17870:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17882:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17812:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18175:165:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18192:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18203:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18185:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18185:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18185:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18226:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18237:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18222:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18222:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18242:2:22",
                                                                        "type": "",
                                                                        "value": "15"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18215:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18215:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18215:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18265:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18276:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18261:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18261:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "416c726561647920736574746c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18281:17:22",
                                                                        "type": "",
                                                                        "value": "Already settled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18254:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18254:45:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18254:45:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18308:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18320:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18331:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18316:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18316:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18308:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c8ab8a2be779d9262c8a9592ba3da06668869724ea761c2b8bed96453f72b21e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18152:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18166:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18001:339:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18392:181:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "18402:20:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "18412:10:22",
                                                                "type": "",
                                                                "value": "0xffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "18406:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "18431:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18446:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18449:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18442:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18442:10:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "18435:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "18461:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18476:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18479:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18472:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18472:10:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "18465:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "18516:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18518:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "18518:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "18518:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18497:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18506:2:22"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18510:3:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18502:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18502:12:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18494:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18494:21:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "18491:47:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18547:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18558:3:22"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18563:3:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18554:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18554:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18547:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18375:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18378:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18384:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18345:228:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18752:168:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18769:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18780:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18762:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18762:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18762:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18803:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18814:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18799:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18799:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18819:2:22",
                                                                        "type": "",
                                                                        "value": "18"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18792:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18792:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18792:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18842:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18853:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18838:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18838:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4e6f7420736574746c6561626c6520796574",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18858:20:22",
                                                                        "type": "",
                                                                        "value": "Not settleable yet"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18831:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18831:48:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18831:48:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18888:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18900:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18911:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18896:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18896:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18888:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_343ea3fc08d6a86d9bb33bff5b89a4880beb2877c0758a5b9d28acf6f4331668__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18729:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18743:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18578:342:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19099:166:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19116:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19127:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19109:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19109:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19109:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19150:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "19161:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19146:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19146:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19166:2:22",
                                                                        "type": "",
                                                                        "value": "16"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19139:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19139:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19139:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19189:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "19200:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19185:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19185:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4e6f7420736c6f772072656c61796572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19205:18:22",
                                                                        "type": "",
                                                                        "value": "Not slow relayer"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19178:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19178:46:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19178:46:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19233:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19245:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19256:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19241:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19241:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19233:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9c5c2898dfaf68f9d9f7da005f4e14e47b970b541fdaa53f62f755602f65f784__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19076:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19090:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18925:340:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19317:189:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19327:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "19337:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19331:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19364:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19379:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19382:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19375:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19375:10:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19368:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19394:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19409:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19412:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19405:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19405:10:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19398:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "19449:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19451:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19451:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19451:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19430:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19439:2:22"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19443:3:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19435:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19435:12:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19427:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19427:21:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "19424:47:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19480:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19491:3:22"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19496:3:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19487:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19487:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19480:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19300:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19303:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19309:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19270:236:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19558:218:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19568:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19582:1:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19585:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19578:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19578:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19572:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "19652:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19654:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19654:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19654:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19610:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19603:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19603:10:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19619:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "19634:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "255"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "19639:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "19630:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "19630:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "19643:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "19626:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "19626:19:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "19647:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "19622:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "19622:27:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sgt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19615:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19615:35:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19599:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19599:52:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "19596:78:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "19723:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19725:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19725:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19725:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19690:2:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19698:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "19709:3:22",
                                                                                                "type": "",
                                                                                                "value": "255"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "19714:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "19705:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "19705:11:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "19718:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "19701:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "19701:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19694:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19694:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19686:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19686:36:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "19683:62:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19754:16:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19765:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19768:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19761:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19761:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19754:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_int256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19541:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19544:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19550:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19511:265:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19936:98:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19946:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19958:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19969:3:22",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19954:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19954:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19946:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20010:6:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20018:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_RelayData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19982:27:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19982:46:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19982:46:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_RelayData_$3952_memory_ptr__to_t_struct$_RelayData_$3952_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19905:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19916:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19927:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19781:253:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20213:163:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20230:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20241:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20223:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20223:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20223:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20264:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20275:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20260:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20260:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20280:2:22",
                                                                        "type": "",
                                                                        "value": "13"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20253:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20253:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20253:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20303:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20314:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20299:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20299:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "43616e742073656e6420657468",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20319:15:22",
                                                                        "type": "",
                                                                        "value": "Cant send eth"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20292:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20292:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20292:43:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20344:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20356:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20367:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20352:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20352:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20344:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_6d85c5f14fef91ee2d1e97a9ebbeb17234c6f1697165e89e66564bef6d66742d__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20190:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20204:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20039:337:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20433:116:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "20492:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20494:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "20494:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "20494:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "20464:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "20457:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "20457:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20450:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20450:17:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20472:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "20483:1:22",
                                                                                                "type": "",
                                                                                                "value": "0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "20479:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "20479:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "20487:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "div",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "20475:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "20475:14:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20469:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20469:21:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20446:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20446:45:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "20443:71:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20523:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20538:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20541:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20534:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20534:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "product",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20523:7:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_mul_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20412:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20415:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "product",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20421:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20381:168:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20586:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20603:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20610:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20615:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20606:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20606:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20596:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20596:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20596:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20643:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20646:4:22",
                                                                        "type": "",
                                                                        "value": "0x12"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20636:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20636:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20636:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20667:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20670:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20660:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20660:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20660:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x12",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "20554:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20732:171:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "20763:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20784:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "20791:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "20796:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "20787:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "20787:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20777:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "20777:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "20777:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20828:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20831:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x12"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20821:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "20821:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "20821:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20856:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20859:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20849:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "20849:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "20849:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20752:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20745:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20745:9:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "20742:132:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20883:14:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20892:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20895:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "div",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20888:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20888:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "r",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20883:1:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_div_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20717:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20720:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "r",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20726:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20686:217:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21082:180:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21099:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21110:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21092:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21092:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21092:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21133:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21144:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21129:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21129:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21149:2:22",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21122:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21122:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21122:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21172:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21183:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21168:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21168:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5574696c697a6174696f6e20746f6f206869676820746f2072656d6f7665",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21188:32:22",
                                                                        "type": "",
                                                                        "value": "Utilization too high to remove"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21161:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21161:60:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21161:60:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21230:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21242:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21253:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21238:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21238:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21230:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_014e645e7f8031a206f3b5a5e54294e512399b30b942040cdefea4c386ac4c2c__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21059:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21073:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20908:354:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21441:177:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21458:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21469:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21451:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21451:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21451:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21492:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21503:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21488:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21488:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21508:2:22",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21481:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21481:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21481:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21531:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21542:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21527:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21527:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "42616420616464206c6971756964697479204574682076616c7565",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21547:29:22",
                                                                        "type": "",
                                                                        "value": "Bad add liquidity Eth value"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21520:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21520:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21520:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21586:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21598:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21609:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21594:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21594:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21586:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_1b9adfacf0e3713528db5d163499daffed51d205d476d1216aa03b51e5246b78__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21418:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21432:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21267:351:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21797:173:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21814:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21825:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21807:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21807:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21807:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21848:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21859:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21844:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21844:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21864:2:22",
                                                                        "type": "",
                                                                        "value": "23"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21837:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21837:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21837:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21887:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21898:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21883:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21883:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "52656c61792063616e6e6f742062652073706564207570",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21903:25:22",
                                                                        "type": "",
                                                                        "value": "Relay cannot be sped up"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21876:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21876:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21876:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21938:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21950:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21961:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21946:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21946:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21938:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21774:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21788:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21623:347:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22104:175:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "22114:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22126:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22137:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22122:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22122:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22114:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "22149:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22167:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22172:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22163:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22163:11:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22176:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22159:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22159:19:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "22153:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22194:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22209:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22217:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22205:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22205:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22187:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22187:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22187:34:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22241:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22252:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22237:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22237:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22261:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22269:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22257:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22257:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22230:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22230:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22230:43:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22065:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22076:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22084:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22095:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21975:304:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22458:227:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22475:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22486:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22468:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22468:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22468:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22509:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22520:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22505:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22505:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22525:2:22",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22498:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22498:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22498:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22548:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22559:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22544:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22544:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22564:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: decreased allowance below"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22537:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22537:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22537:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22619:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22630:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22615:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22615:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "207a65726f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22635:7:22",
                                                                        "type": "",
                                                                        "value": " zero"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22608:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22608:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22608:35:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "22652:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22664:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22675:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22660:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22660:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22652:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22435:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22449:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22284:401:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22864:177:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22881:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22892:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22874:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22874:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22874:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22915:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22926:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22911:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22911:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22931:2:22",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22904:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22904:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22904:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22954:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22965:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22950:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22950:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f6e6c79206d756c746963616c6c207769746820302076616c7565",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22970:29:22",
                                                                        "type": "",
                                                                        "value": "Only multicall with 0 value"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22943:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22943:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22943:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23009:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23021:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23032:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23017:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23017:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23009:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22841:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22855:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22690:351:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23078:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23095:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "23102:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "23107:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23098:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23098:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23088:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23088:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23088:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23135:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23138:4:22",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23128:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23128:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23128:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23159:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23162:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23152:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23152:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23152:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "23046:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23272:427:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23282:51:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "ptr_to_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23321:11:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23308:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23308:25:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "rel_offset_of_tail",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23286:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "23422:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23431:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23434:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23424:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "23424:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "23424:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "rel_offset_of_tail",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23356:18:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [],
                                                                                                "functionName": {
                                                                                                    "name": "calldatasize",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "23384:12:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "23384:14:22"
                                                                                            },
                                                                                            {
                                                                                                "name": "base_ref",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "23400:8:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "23380:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "23380:29:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "23415:2:22",
                                                                                                "type": "",
                                                                                                "value": "30"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "23411:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "23411:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "23376:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "23376:43:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23352:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23352:68:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23345:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23345:76:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "23342:96:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23447:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "base_ref",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23465:8:22"
                                                                    },
                                                                    {
                                                                        "name": "rel_offset_of_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23475:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23461:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23461:33:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "addr_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23451:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23503:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23526:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23513:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23513:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23503:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "23576:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23585:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23588:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23578:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "23578:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "23578:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23548:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23556:18:22",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23545:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23545:30:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "23542:50:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23601:25:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23613:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23621:4:22",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23609:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23609:17:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "addr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23601:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "23677:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23686:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23689:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23679:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "23679:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "23679:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23642:4:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [],
                                                                                "functionName": {
                                                                                    "name": "calldatasize",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "23652:12:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "23652:14:22"
                                                                            },
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23668:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23648:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23648:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sgt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23638:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23638:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "23635:58:22"
                                                        }
                                                    ]
                                                },
                                                "name": "access_calldata_tail_t_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "base_ref",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23229:8:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "ptr_to_tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23239:11:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "addr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23255:4:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23261:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "23178:521:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23851:124:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23874:3:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23879:6:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23887:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23861:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23861:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23861:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23903:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23917:3:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23922:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23913:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23913:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23907:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23945:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23949:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23938:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23938:13:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23938:13:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23960:9:22",
                                                            "value": {
                                                                "name": "_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "23967:2:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23960:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23819:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23824:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23832:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23843:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "23704:271:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "24071:793:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24117:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24126:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24129:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24119:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24119:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24119:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24092:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24101:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24088:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24088:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24113:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24084:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24084:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24081:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24142:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24162:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24156:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24156:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24146:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24181:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "24191:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24185:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24236:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24245:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24248:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24238:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24238:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24238:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24224:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24232:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24221:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24221:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24218:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24261:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24275:9:22"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24286:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24271:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24271:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24265:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24341:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24350:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24353:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24343:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24343:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24343:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "24320:2:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "24324:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "24316:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "24316:13:22"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24331:7:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24312:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24312:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24305:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24305:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24302:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24366:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24382:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24376:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24376:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24370:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24408:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24410:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24410:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24410:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24400:2:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24404:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24397:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24397:10:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24394:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24439:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24453:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24449:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24449:7:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24443:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24465:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24485:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24479:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24479:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24469:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24497:71:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24519:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "24543:2:22"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "24547:4:22",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "24539:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "24539:13:22"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "24554:2:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "24535:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "24535:22:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "24559:2:22",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "24531:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "24531:31:22"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24564:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24527:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24527:40:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24515:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24515:53:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24501:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24627:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24629:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24629:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24629:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24586:10:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24598:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24583:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24583:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24606:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24618:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24603:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24603:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24580:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24580:46:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24577:72:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24665:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24669:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24658:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24658:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24658:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24696:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24704:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24689:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24689:18:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24689:18:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24753:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24762:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24765:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24755:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24755:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24755:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "24730:2:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "24734:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "24726:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "24726:11:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24739:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24722:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24722:20:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24744:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24719:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24719:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24716:53:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24804:2:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24808:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24800:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24800:11:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24817:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24825:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24813:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24813:15:22"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24830:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24778:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24778:55:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24778:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "24842:16:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "24852:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24842:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24037:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24048:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24060:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "23980:884:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "24916:88:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24947:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24949:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24949:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24949:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24932:5:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24943:1:22",
                                                                                "type": "",
                                                                                "value": "0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24939:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24939:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24929:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24929:17:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24926:43:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "24978:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24989:5:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24996:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24985:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24985:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24978:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24898:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24908:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "24869:135:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "25090:170:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "25136:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "25145:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "25148:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25138:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "25138:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "25138:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25111:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25120:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25107:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25107:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25132:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25103:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25103:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "25100:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "25161:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25180:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25174:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25174:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "25165:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25224:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25199:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25199:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25199:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "25239:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "25249:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25239:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25056:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25067:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25079:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "25009:251:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "25372:336:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "25418:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "25427:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "25430:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25420:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "25420:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "25420:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25393:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25402:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25389:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25389:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25414:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25385:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25385:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "25382:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "25443:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25463:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25457:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25457:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "25447:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "25475:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25497:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25505:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25493:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25493:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "25479:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "25583:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25585:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "25585:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "25585:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25526:10:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25538:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25523:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25523:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25562:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25574:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25559:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25559:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25520:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25520:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "25517:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25621:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25625:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25614:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25614:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25614:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25652:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25666:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25660:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25660:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25645:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25645:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25645:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "25686:16:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "25696:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25686:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25338:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25349:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25361:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "25265:443:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "25887:163:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25904:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25915:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25897:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25897:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25897:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25938:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25949:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25934:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25934:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25954:2:22",
                                                                        "type": "",
                                                                        "value": "13"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25927:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25927:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25927:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25977:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25988:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25973:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25973:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "50617374206c6976656e657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25993:15:22",
                                                                        "type": "",
                                                                        "value": "Past liveness"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25966:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25966:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25966:43:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26018:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26030:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26041:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26026:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26026:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26018:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_21c11d76539f521406afa6465d19dbc68951b755ccb3b86b975cbdb7c85590e0__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25864:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25878:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "25713:337:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "26229:164:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26246:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26257:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26239:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26239:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26239:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26280:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26291:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26276:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26276:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26296:2:22",
                                                                        "type": "",
                                                                        "value": "14"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26269:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26269:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26269:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26319:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26330:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26315:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26315:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4e6f742064697370757461626c65",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26335:16:22",
                                                                        "type": "",
                                                                        "value": "Not disputable"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26308:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26308:44:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26308:44:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26361:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26373:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26384:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26369:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26369:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26361:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_6e21cb62d00f42c575e706905a321dbe03b2d3e18c1a8cd6dde1b236d44f9cb5__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26206:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26220:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26055:338:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "26572:181:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26589:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26600:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26582:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26582:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26582:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26623:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26634:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26619:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26619:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26639:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26612:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26612:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26612:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26662:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26673:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26658:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26658:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26678:33:22",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26651:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26651:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26651:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26721:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26733:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26744:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26729:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26729:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26721:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26549:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26563:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26398:355:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "26932:226:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26949:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26960:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26942:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26942:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26942:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26983:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26994:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26979:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26979:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26999:2:22",
                                                                        "type": "",
                                                                        "value": "36"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26972:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26972:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26972:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27022:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27033:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27018:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27018:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27038:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: approve from the zero add"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27011:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27011:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27011:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27093:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27104:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27089:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27089:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "72657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27109:6:22",
                                                                        "type": "",
                                                                        "value": "ress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27082:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27082:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27082:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "27125:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27137:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27148:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27133:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27133:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27125:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26909:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26923:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26758:400:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "27337:224:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27354:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27365:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27347:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27347:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27347:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27388:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27399:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27384:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27384:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27404:2:22",
                                                                        "type": "",
                                                                        "value": "34"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27377:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27377:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27377:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27427:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27438:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27423:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27423:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27443:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: approve to the zero addre"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27416:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27416:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27416:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27498:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27509:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27494:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27494:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "7373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27514:4:22",
                                                                        "type": "",
                                                                        "value": "ss"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27487:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27487:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27487:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "27528:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27540:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27551:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27536:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27536:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27528:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27314:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27328:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "27163:398:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "27753:170:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "27763:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27775:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27786:3:22",
                                                                        "type": "",
                                                                        "value": "288"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27771:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27771:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27763:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27829:6:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27837:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27799:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27799:48:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27799:48:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27867:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27878:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27863:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27863:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27888:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "27904:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "27909:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "27900:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "27900:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "27913:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "27896:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "27896:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27884:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27884:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27856:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27856:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27856:61:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27714:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27725:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27733:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27744:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "27566:357:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "28167:300:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "28177:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28189:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28200:3:22",
                                                                        "type": "",
                                                                        "value": "352"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28185:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28185:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28177:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28243:6:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28251:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28213:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28213:48:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28213:48:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28281:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28292:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28277:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28277:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28302:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28310:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28298:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28298:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28270:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28270:52:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28270:52:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28342:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28353:3:22",
                                                                                "type": "",
                                                                                "value": "288"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28338:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28338:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28363:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28371:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28359:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28359:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28331:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28331:60:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28331:60:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28411:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28422:3:22",
                                                                                "type": "",
                                                                                "value": "320"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28407:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28407:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28432:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "28448:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "28453:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "28444:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "28444:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "28457:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "28440:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "28440:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28428:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28428:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28400:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28400:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28400:61:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28112:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28123:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28131:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28139:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28147:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28158:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "27928:539:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "28629:218:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "28639:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28651:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28662:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28647:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28647:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28639:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "28674:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28692:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28697:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28688:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28688:11:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28701:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28684:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28684:19:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "28678:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28719:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28734:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28742:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28730:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28730:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28712:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28712:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28712:34:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28766:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28777:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28762:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28762:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28786:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28794:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28782:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28782:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28755:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28755:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28755:43:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28818:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28829:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28814:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28814:18:22"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28834:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28807:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28807:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28807:34:22"
                                                        }
                                                    ]
                                                },
                                                "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": "28582:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28593:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28601:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28609:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28620:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "28472:375:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "29026:227:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29043:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29054:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29036:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29036:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29036:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29077:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29088:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29073:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29073:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29093:2:22",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29066:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29066:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29066:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29116:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29127:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29112:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29112:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29132:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer from the zero ad"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29105:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29105:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29105:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29187:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29198:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29183:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29183:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29203:7:22",
                                                                        "type": "",
                                                                        "value": "dress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29176:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29176:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29176:35:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "29220:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29232:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29243:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29228:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29228:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29220:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29003:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29017:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "28852:401:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "29432:225:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29449:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29460:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29442:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29442:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29442:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29483:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29494:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29479:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29479:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29499:2:22",
                                                                        "type": "",
                                                                        "value": "35"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29472:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29472:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29472:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29522:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29533:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29518:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29518:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29538:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer to the zero addr"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29511:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29511:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29511:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29593:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29604:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29589:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29589:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29609:5:22",
                                                                        "type": "",
                                                                        "value": "ess"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29582:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29582:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29582:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "29624:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29636:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29647:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29632:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29632:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29624:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29409:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29423:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "29258:399:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "29836:228:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29853:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29864:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29846:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29846:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29846:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29887:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29898:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29883:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29883:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29903:2:22",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29876:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29876:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29876:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29926:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29937:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29922:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29922:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29942:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer amount exceeds b"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29915:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29915:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29915:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29997:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30008:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29993:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29993:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "616c616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30013:8:22",
                                                                        "type": "",
                                                                        "value": "alance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29986:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29986:36:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29986:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "30031:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30043:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30054:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30039:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30039:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30031:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29813:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29827:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "29662:402:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "30243:254:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30260:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30271:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30253:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30253:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30253:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30294:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30305:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30290:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30290:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30310:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30283:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30283:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30283:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30333:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30344:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30329:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30329:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4861736865642072656c617920706172616d7320646f206e6f74206d61746368",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30349:34:22",
                                                                        "type": "",
                                                                        "value": "Hashed relay params do not match"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30322:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30322:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30322:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30404:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30415:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30400:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30400:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "206578697374696e672072656c6179206861736820666f72206465706f736974",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30420:34:22",
                                                                        "type": "",
                                                                        "value": " existing relay hash for deposit"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30393:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30393:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30393:62:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "30464:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30476:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30487:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30472:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30472:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30464:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_140eb91724df70a0cee818ba517cecd0d75a058e9680b55981a9187bd7c49aba__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30220:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30234:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "30069:428:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "30629:144:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "30639:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30651:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30662:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30647:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30647:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30639:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30681:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30692:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30674:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30674:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30674:25:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30719:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30730:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30715:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30715:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30739:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30747:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30735:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30735:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30708:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30708:59:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30708:59:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30590:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30601:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30609:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30620:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "30502:271:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "30907:145:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "30917:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30929:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30940:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30925:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30925:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30917:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30959:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30974:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "30990:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "30995:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "30986:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "30986:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "30999:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "30982:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "30982:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30970:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30970:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30952:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30952:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30952:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31023:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31034:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31019:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31019:18:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31039:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31012:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31012:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31012:34:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30868:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30879:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30887:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30898:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "30778:274:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "31105:219:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "31115:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31129:1:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31132:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31125:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31125:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "31119:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "31191:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31193:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "31193:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "31193:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31157:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31150:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31150:10:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "x",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31166:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "31177:3:22",
                                                                                                "type": "",
                                                                                                "value": "255"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "31182:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "31173:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "31173:11:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "y",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "31186:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "31169:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "31169:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31162:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31162:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31146:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31146:44:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "31143:70:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "31270:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31272:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "31272:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "31272:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31229:2:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "x",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31237:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "31252:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "255"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "31257:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "31248:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "31248:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "31261:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "31244:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "31244:19:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "y",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "31265:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "31240:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "31240:27:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sgt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31233:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31233:35:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31225:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31225:44:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "31222:70:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "31301:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31313:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31316:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31309:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31309:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31301:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_int256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31087:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31090:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31096:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "31057:267:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "31503:223:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31520:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31531:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31513:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31513:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31513:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31554:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31565:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31550:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31550:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31570:2:22",
                                                                        "type": "",
                                                                        "value": "33"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31543:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31543:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31543:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31593:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31604:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31589:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31589:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f20616464726573",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31609:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: burn from the zero addres"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31582:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31582:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31582:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31664:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31675:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31660:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31660:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31680:3:22",
                                                                        "type": "",
                                                                        "value": "s"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31653:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31653:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31653:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "31693:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31705:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31716:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31701:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31701:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31693:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31480:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31494:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "31329:397:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "31905:224:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31922:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31933:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31915:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31915:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31915:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31956:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31967:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31952:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31952:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31972:2:22",
                                                                        "type": "",
                                                                        "value": "34"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31945:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31945:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31945:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31995:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32006:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31991:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31991:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32011:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: burn amount exceeds balan"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31984:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31984:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31984:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32066:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32077:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32062:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32062:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32082:4:22",
                                                                        "type": "",
                                                                        "value": "ce"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32055:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32055:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32055:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "32096:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32108:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32119:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32104:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32104:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32096:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31882:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31896:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "31731:398:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "32308:181:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32325:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32336:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32318:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32318:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32318:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32359:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32370:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32355:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32355:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32375:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32348:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32348:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32348:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32398:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32409:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32394:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32394:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32414:33:22",
                                                                        "type": "",
                                                                        "value": "ERC20: mint to the zero address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32387:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32387:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32387:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "32457:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32469:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32480:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32465:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32465:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32457:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32285:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32299:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "32134:355:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "32854:573:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "32864:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "32874:3:22",
                                                                "type": "",
                                                                "value": "288"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "32868:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32893:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32904:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32886:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32886:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32886:25:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "32920:20:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "32930:10:22",
                                                                "type": "",
                                                                "value": "0xffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "32924:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32960:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32971:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32956:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32956:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32980:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32988:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32976:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32976:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32949:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32949:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32949:43:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33012:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33023:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33008:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33008:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33028:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33001:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33001:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33001:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "33040:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33066:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33078:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33089:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33074:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33074:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33048:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33048:45:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33040:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "33102:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33120:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33125:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33116:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33116:11:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "33129:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33112:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33112:19:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "33106:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33151:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33162:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33147:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33147:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33171:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33179:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33167:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33167:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33140:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33140:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33140:43:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33203:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33214:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33199:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33199:19:22"
                                                                    },
                                                                    {
                                                                        "name": "value4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33220:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33192:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33192:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33192:35:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33247:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33258:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33243:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33243:19:22"
                                                                    },
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33264:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33236:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33236:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33236:35:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33291:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33302:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33287:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33287:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value6",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33312:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33320:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33308:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33308:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33280:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33280:44:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33280:44:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33344:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33355:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33340:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33340:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value7",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33365:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33373:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33361:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33361:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33333:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33333:44:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33333:44:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33397:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33408:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33393:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33393:19:22"
                                                                    },
                                                                    {
                                                                        "name": "value8",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33414:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33386:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33386:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33386:35:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_contract$_IERC20_$584_t_rational_0_by_1_t_uint256_t_uint32_t_address_t_int256__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_address_t_uint256_t_uint256_t_uint256_t_address_t_int256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32759:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value8",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32770:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32778:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32786:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32794:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32802:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32810:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32818:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32826:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32834:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32845:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "32494:933:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "33739:1292:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "33749:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "33759:3:22",
                                                                "type": "",
                                                                "value": "512"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "33753:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33778:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33789:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33771:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33771:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33771:25:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33816:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33827:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33812:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33812:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33836:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33844:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33832:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33832:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33805:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33805:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33805:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33876:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33887:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33872:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33872:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33892:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33865:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33865:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33865:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "33904:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33930:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33942:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33953:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33938:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33938:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33912:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33912:45:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33904:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33991:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33985:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33985:13:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34004:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34015:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34000:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34000:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33966:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33966:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33966:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34028:42:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34058:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34066:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34054:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34054:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34048:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34048:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34032:12:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34098:12:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34116:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34127:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34112:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34112:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34079:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34079:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34079:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34141:44:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34173:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34181:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34169:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34169:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34163:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34163:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34145:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34213:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34233:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34244:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34229:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34229:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34194:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34194:55:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34194:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34258:44:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34290:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34298:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34286:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34286:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34280:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34280:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34262:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34327:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34347:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34358:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34343:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34343:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34311:15:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34311:52:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34311:52:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34383:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34394:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34379:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34379:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34410:6:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "34418:3:22",
                                                                                        "type": "",
                                                                                        "value": "128"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "34406:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "34406:16:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34400:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34400:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34372:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34372:52:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34372:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34433:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34453:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34461:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34449:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34449:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34443:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34443:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34437:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34475:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "34485:3:22",
                                                                "type": "",
                                                                "value": "256"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34479:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34508:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34519:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34504:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34504:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34524:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34497:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34497:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34497:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34536:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34556:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34564:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34552:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34552:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34546:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34546:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34540:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34578:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "34588:3:22",
                                                                "type": "",
                                                                "value": "288"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_5",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34582:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34611:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34622:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34607:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34607:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34627:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34600:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34600:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34600:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34639:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34659:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34667:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34655:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34655:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34649:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34649:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_6",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34643:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34681:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "34691:3:22",
                                                                "type": "",
                                                                "value": "320"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_7",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34685:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34714:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_7",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34725:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34710:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34710:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34730:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34703:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34703:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34703:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34753:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34764:3:22",
                                                                                "type": "",
                                                                                "value": "352"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34749:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34749:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34780:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34788:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "34776:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "34776:15:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34770:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34770:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34742:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34742:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34742:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34813:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34824:3:22",
                                                                                "type": "",
                                                                                "value": "384"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34809:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34809:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34840:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_5",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34848:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "34836:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "34836:15:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34830:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34830:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34802:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34802:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34802:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34873:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34884:3:22",
                                                                                "type": "",
                                                                                "value": "416"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34869:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34869:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34900:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_7",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34908:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "34896:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "34896:15:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34890:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34890:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34862:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34862:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34862:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34941:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34953:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34964:3:22",
                                                                                "type": "",
                                                                                "value": "448"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34949:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34949:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34922:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34922:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34922:47:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34997:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35009:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "35020:3:22",
                                                                                "type": "",
                                                                                "value": "480"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35005:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35005:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34978:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34978:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34978:47:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33668:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33679:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33687:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33695:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33703:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33711:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33719:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33730:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "33432:1599:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "35114:167:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "35160:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "35169:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "35172:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35162:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "35162:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "35162:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35135:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35144:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35131:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35131:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35156:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35127:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35127:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "35124:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "35185:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35204:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35198:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35198:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "35189:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35245:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35223:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35223:28:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35223:28:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "35260:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "35270:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35260:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35080:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35091:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35103:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "35036:245:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "35460:232:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35477:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35488:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35470:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35470:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35470:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35511:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "35522:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35507:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35507:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35527:2:22",
                                                                        "type": "",
                                                                        "value": "42"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35500:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35500:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35500:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35550:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "35561:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35546:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35546:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35566:34:22",
                                                                        "type": "",
                                                                        "value": "SafeERC20: ERC20 operation did n"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35539:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35539:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35539:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35621:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "35632:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35617:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35617:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6f742073756363656564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35637:12:22",
                                                                        "type": "",
                                                                        "value": "ot succeed"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35610:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35610:40:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35610:40:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "35659:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35671:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35682:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35667:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35667:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35659:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35437:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35451:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "35286:406:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "35926:429:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "35936:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35956:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35950:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35950:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "35940:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35998:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36006:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35994:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35994:17:22"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36013:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36018:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35972:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35972:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35972:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "36034:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36051:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36056:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36047:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36047:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "end_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "36038:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "36072:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36094:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36088:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36088:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "36076:8:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36136:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36144:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36132:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36132:17:22"
                                                                    },
                                                                    {
                                                                        "name": "end_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36151:5:22"
                                                                    },
                                                                    {
                                                                        "name": "length_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36158:8:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36110:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36110:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36110:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "36176:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "end_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36193:5:22"
                                                                    },
                                                                    {
                                                                        "name": "length_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36200:8:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36189:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36189:20:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "end_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "36180:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "36218:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36240:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36234:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36234:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "36222:8:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36282:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36290:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36278:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36278:17:22"
                                                                    },
                                                                    {
                                                                        "name": "end_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36297:5:22"
                                                                    },
                                                                    {
                                                                        "name": "length_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36304:8:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36256:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36256:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36256:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "36322:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "end_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36333:5:22"
                                                                    },
                                                                    {
                                                                        "name": "length_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36340:8:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36329:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36329:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36322:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35886:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35891:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35899:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35907:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35918:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "35697:658:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "36534:244:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36551:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36562:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36544:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36544:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36544:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36585:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36596:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36581:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36581:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36601:2:22",
                                                                        "type": "",
                                                                        "value": "54"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36574:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36574:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36574:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36624:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36635:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36620:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36620:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36640:34:22",
                                                                        "type": "",
                                                                        "value": "SafeERC20: approve from non-zero"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36613:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36613:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36613:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36695:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36706:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36691:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36691:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36711:24:22",
                                                                        "type": "",
                                                                        "value": " to non-zero allowance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36684:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36684:52:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36684:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "36745:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36757:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36768:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36753:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36753:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36745:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "36511:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "36525:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "36360:418:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "37122:231:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37139:3:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "2c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37144:3:22",
                                                                        "type": "",
                                                                        "value": ","
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37132:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37132:16:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37132:16:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "37157:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37177:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37171:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37171:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "37161:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37219:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "37227:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37215:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37215:17:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37238:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "37243:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37234:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37234:11:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37247:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37193:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37193:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37193:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "37263:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37277:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37282:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37273:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37273:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "37267:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37309:2:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "37313:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37305:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37305:10:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "3a",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37317:3:22",
                                                                        "type": "",
                                                                        "value": ":"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37298:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37298:23:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37298:23:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "37330:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37341:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37345:1:22",
                                                                        "type": "",
                                                                        "value": "2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37337:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37337:10:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37330:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_string_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37098:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37103:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37114:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "36783:570:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "37596:199:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "37606:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37626:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37620:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37620:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "37610:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37668:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "37676:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37664:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37664:17:22"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37683:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37688:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37642:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37642:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37642:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "37704:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37721:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37726:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37717:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37717:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "end_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "37708:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "end_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37749:5:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "3a",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37756:3:22",
                                                                        "type": "",
                                                                        "value": ":"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37742:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37742:18:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37742:18:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "37769:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "end_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37780:5:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37787:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37776:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37776:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37769:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37572:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37577:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37588:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "37358:437:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "37947:100:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37964:3:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37969:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37957:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37957:19:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37957:19:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37996:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38001:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37992:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37992:12:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38006:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37985:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37985:28:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37985:28:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "38022:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38033:3:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38038:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38029:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38029:12:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38022:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37915:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37920:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37928:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37939:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "37800:247:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "38226:228:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38243:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38254:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38236:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38236:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38236:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38277:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38288:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38273:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38273:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38293:2:22",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38266:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38266:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38266:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38316:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38327:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38312:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38312:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38332:34:22",
                                                                        "type": "",
                                                                        "value": "Address: insufficient balance fo"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38305:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38305:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38305:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38387:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38398:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38383:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38383:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "722063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38403:8:22",
                                                                        "type": "",
                                                                        "value": "r call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38376:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38376:36:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38376:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "38421:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38433:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38444:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38429:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38429:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38421:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38203:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38217:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "38052:402:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "38633:179:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38650:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38661:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38643:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38643:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38643:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38684:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38695:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38680:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38680:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38700:2:22",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38673:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38673:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38673:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38723:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38734:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38719:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38719:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38739:31:22",
                                                                        "type": "",
                                                                        "value": "Address: call to non-contract"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38712:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38712:59:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38712:59:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "38780:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38792:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38803:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38788:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38788:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38780:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38610:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38624:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "38459:353:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "38954:137:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "38964:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38984:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38978:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38978:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "38968:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "39026:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "39034:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "39022:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "39022:17:22"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "39041:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "39046:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "39000:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "39000:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "39000:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "39062:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "39073:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "39078:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "39069:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "39069:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "39062:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "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": "38930:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38935:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38946:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "38817:274:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\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 abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_bool(value, pos)\n    {\n        mstore(pos, iszero(iszero(value)))\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_uint64(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xe0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function validator_revert_uint64(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_uint64(value)\n    }\n    function validator_revert_uint32(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_uint32(value)\n    }\n    function abi_decode_struct_DepositData(headStart, end) -> value\n    {\n        let _1 := 0x0100\n        if slt(sub(end, headStart), _1) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, _1)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        mstore(memPtr, calldataload(headStart))\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_uint64(value_1)\n        mstore(add(memPtr, 32), value_1)\n        mstore(add(memPtr, 64), abi_decode_address(add(headStart, 64)))\n        mstore(add(memPtr, 96), abi_decode_address(add(headStart, 96)))\n        mstore(add(memPtr, 128), calldataload(add(headStart, 128)))\n        mstore(add(memPtr, 160), abi_decode_uint64(add(headStart, 160)))\n        mstore(add(memPtr, 192), abi_decode_uint64(add(headStart, 192)))\n        mstore(add(memPtr, 224), abi_decode_uint32(add(headStart, 224)))\n    }\n    function abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 288) { revert(0, 0) }\n        value0 := abi_decode_struct_DepositData(headStart, dataEnd)\n        let value := calldataload(add(headStart, 256))\n        validator_revert_uint64(value)\n        value1 := 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    function abi_encode_uint32(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffff))\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_struct$_RelayData_$3952_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 480) { revert(0, 0) }\n        value0 := abi_decode_struct_DepositData(headStart, dataEnd)\n        if slt(add(_1, not(255)), 0xe0) { revert(0, 0) }\n        let value := allocate_memory()\n        let value_1 := calldataload(add(headStart, 256))\n        if iszero(lt(value_1, 3)) { revert(0, 0) }\n        mstore(value, value_1)\n        mstore(add(value, 32), abi_decode_address(add(headStart, 288)))\n        mstore(add(value, 64), abi_decode_uint32(add(headStart, 320)))\n        mstore(add(value, 96), abi_decode_uint64(add(headStart, 352)))\n        mstore(add(value, 128), abi_decode_uint32(add(headStart, 384)))\n        mstore(add(value, 160), calldataload(add(headStart, 416)))\n        mstore(add(value, 192), calldataload(add(headStart, 448)))\n        value1 := value\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_address(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(160, 1), 1)))\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_contract$_SkinnyOptimisticOracleInterface_$6650__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_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint64(value)\n        value0 := value\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 abi_decode_tuple_t_uint256t_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_contract$_StoreInterface_$6695__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_contract$_BridgeAdminInterface_$6109__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_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            tail_2 := abi_encode_string(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$584__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_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_4d52a6da38278ead32cd9f33eb5cd33c43ec96fe5ce1bd6e71fb70656b4cbf2e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Caller not bridge admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_88329e000212abe98d559877c824675fd701dbb3e66db634ca25c1b6e368a147__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Relays are disabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Invalid fees\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Pending relay exists\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint32(value) -> ret\n    {\n        let _1 := 0xffffffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Insufficient pool balance\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_struct_DepositData(value, pos)\n    {\n        mstore(pos, mload(value))\n        let memberValue0 := mload(add(value, 0x20))\n        let _1 := 0xffffffffffffffff\n        mstore(add(pos, 0x20), and(memberValue0, _1))\n        let memberValue0_1 := mload(add(value, 0x40))\n        let _2 := sub(shl(160, 1), 1)\n        mstore(add(pos, 0x40), and(memberValue0_1, _2))\n        mstore(add(pos, 0x60), and(mload(add(value, 0x60)), _2))\n        mstore(add(pos, 0x80), mload(add(value, 0x80)))\n        mstore(add(pos, 0xa0), and(mload(add(value, 0xa0)), _1))\n        mstore(add(pos, 0xc0), and(mload(add(value, 0xc0)), _1))\n        mstore(add(pos, 0xe0), and(mload(add(value, 0xe0)), 0xffffffff))\n    }\n    function abi_encode_struct_RelayData(value, pos)\n    {\n        let _1 := mload(value)\n        if iszero(lt(_1, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, _1)\n        mstore(add(pos, 0x20), and(mload(add(value, 0x20)), sub(shl(160, 1), 1)))\n        let memberValue0 := mload(add(value, 0x40))\n        abi_encode_uint32(memberValue0, add(pos, 0x40))\n        let memberValue0_1 := mload(add(value, 0x60))\n        abi_encode_uint64(memberValue0_1, add(pos, 0x60))\n        let memberValue0_2 := mload(add(value, 0x80))\n        abi_encode_uint32(memberValue0_2, add(pos, 0x80))\n        mstore(add(pos, 0xa0), mload(add(value, 0xa0)))\n        mstore(add(pos, 0xc0), mload(add(value, 0xc0)))\n    }\n    function abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__to_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 512)\n        abi_encode_struct_DepositData(value0, headStart)\n        abi_encode_struct_RelayData(value1, add(headStart, 256))\n        mstore(add(headStart, 480), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds a\")\n        mstore(add(headStart, 96), \"llowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint64_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint64(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint32(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_c8ab8a2be779d9262c8a9592ba3da06668869724ea761c2b8bed96453f72b21e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"Already settled\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_343ea3fc08d6a86d9bb33bff5b89a4880beb2877c0758a5b9d28acf6f4331668__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Not settleable yet\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9c5c2898dfaf68f9d9f7da005f4e14e47b970b541fdaa53f62f755602f65f784__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Not slow relayer\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint64(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_add_t_int256(x, y) -> sum\n    {\n        let _1 := slt(x, 0)\n        if and(iszero(_1), sgt(y, sub(sub(shl(255, 1), 1), x))) { panic_error_0x11() }\n        if and(_1, slt(y, sub(shl(255, 1), x))) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_struct$_RelayData_$3952_memory_ptr__to_t_struct$_RelayData_$3952_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        abi_encode_struct_RelayData(value0, headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_6d85c5f14fef91ee2d1e97a9ebbeb17234c6f1697165e89e66564bef6d66742d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Cant send eth\")\n        tail := add(headStart, 96)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_014e645e7f8031a206f3b5a5e54294e512399b30b942040cdefea4c386ac4c2c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Utilization too high to remove\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1b9adfacf0e3713528db5d163499daffed51d205d476d1216aa03b51e5246b78__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Bad add liquidity Eth value\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Relay cannot be sped up\")\n        tail := add(headStart, 96)\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_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Only multicall with 0 value\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value0 := memPtr\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 32)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, mload(headStart))\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_stringliteral_21c11d76539f521406afa6465d19dbc68951b755ccb3b86b975cbdb7c85590e0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Past liveness\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6e21cb62d00f42c575e706905a321dbe03b2d3e18c1a8cd6dde1b236d44f9cb5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Not disputable\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 288)\n        abi_encode_struct_DepositData(value0, headStart)\n        mstore(add(headStart, 256), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 352)\n        abi_encode_struct_DepositData(value0, headStart)\n        mstore(add(headStart, 256), and(value1, 0xffffffff))\n        mstore(add(headStart, 288), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 320), and(value3, sub(shl(160, 1), 1)))\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_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_140eb91724df70a0cee818ba517cecd0d75a058e9680b55981a9187bd7c49aba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), \"Hashed relay params do not match\")\n        mstore(add(headStart, 96), \" existing relay hash for deposit\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\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 checked_sub_t_int256(x, y) -> diff\n    {\n        let _1 := slt(y, 0)\n        if and(iszero(_1), slt(x, add(shl(255, 1), y))) { panic_error_0x11() }\n        if and(_1, sgt(x, add(sub(shl(255, 1), 1), y))) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: burn amount exceeds balan\")\n        mstore(add(headStart, 96), \"ce\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_contract$_IERC20_$584_t_rational_0_by_1_t_uint256_t_uint32_t_address_t_int256__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_address_t_uint256_t_uint256_t_uint256_t_address_t_int256__fromStack_reversed(headStart, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 288\n        mstore(headStart, value0)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 32), and(value1, _2))\n        mstore(add(headStart, 64), _1)\n        tail := abi_encode_string(value2, add(headStart, _1))\n        let _3 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 96), and(value3, _3))\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _3))\n        mstore(add(headStart, 256), value8)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 512\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n        mstore(add(headStart, 64), _1)\n        tail := abi_encode_string(value2, add(headStart, _1))\n        abi_encode_address(mload(value3), add(headStart, 96))\n        let memberValue0 := mload(add(value3, 32))\n        abi_encode_address(memberValue0, add(headStart, 128))\n        let memberValue0_1 := mload(add(value3, 64))\n        abi_encode_address(memberValue0_1, add(headStart, 160))\n        let memberValue0_2 := mload(add(value3, 96))\n        abi_encode_bool(memberValue0_2, add(headStart, 192))\n        mstore(add(headStart, 224), mload(add(value3, 128)))\n        let _2 := mload(add(value3, 160))\n        let _3 := 256\n        mstore(add(headStart, _3), _2)\n        let _4 := mload(add(value3, 192))\n        let _5 := 288\n        mstore(add(headStart, _5), _4)\n        let _6 := mload(add(value3, 224))\n        let _7 := 320\n        mstore(add(headStart, _7), _6)\n        mstore(add(headStart, 352), mload(add(value3, _3)))\n        mstore(add(headStart, 384), mload(add(value3, _5)))\n        mstore(add(headStart, 416), mload(add(value3, _7)))\n        abi_encode_address(value4, add(headStart, 448))\n        abi_encode_address(value5, add(headStart, 480))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n        mstore(add(headStart, 96), \"ot succeed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        let length_2 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), end_2, length_2)\n        end := add(end_2, length_2)\n    }\n    function abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 54)\n        mstore(add(headStart, 64), \"SafeERC20: approve from non-zero\")\n        mstore(add(headStart, 96), \" to non-zero allowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_string_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, \",\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 1), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 1), \":\")\n        end := add(_1, 2)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_bytes_memory_ptr_t_string_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        let end_1 := add(pos, length)\n        mstore(end_1, \":\")\n        end := add(end_1, 1)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r call\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\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}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "60806040526004361061031e5760003560e01c806370a08231116101ab578063b5351ee2116100f7578063cefed55f11610095578063df738fc81161006f578063df738fc81461097a578063ed4de3a3146109a7578063f1d24bab146109dc578063fff6cae914610a0057600080fd5b8063cefed55f146108f0578063d412f5a414610910578063dd62ed3e1461093457600080fd5b8063bec73ade116100d1578063bec73ade1461086a578063c01e1bd61461088a578063c73a32c3146108af578063cc2c929e146108d657600080fd5b8063b5351ee214610821578063bd6d894d14610836578063be0ba1221461084b57600080fd5b8063975057e711610164578063a9059cbb1161013e578063a9059cbb14610795578063ac9650d8146107b5578063b2084202146107d5578063b454e326146107eb57600080fd5b8063975057e714610735578063a457c2d714610755578063a6af2dfe1461077557600080fd5b806370a082311461067e578063753b91bb146106b45780637998a1c4146106d457806387a515d3146106ea5780638f2839701461070057806395d89b411461072057600080fd5b806323b872dd1161026a5780633fa856c91161022357806351c6590a116101fd57806351c6590a146106205780635df45a371461063357806362822d341461064857806366db52401461066857600080fd5b80633fa856c9146105ca5780634464fae4146105ea5780634f52fd171461060057600080fd5b806323b872dd1461052457806327f224ca1461054457806329cb924d14610564578063313ce5671461057957806339509351146105955780633cc400b3146105b557600080fd5b8063173684c5116102d75780631bf71c38116102b15780631bf71c381461048c5780631c39c38d146104ac57806322302922146104e457806322f8e5661461050457600080fd5b8063173684c51461042957806318160ddd1461046257806319e9d8941461047757600080fd5b806306fdde031461032a57806308ed5b1414610355578063095ea7b31461037757806311cfc159146103a757806313111725146103e5578063135c404e1461040557600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a15565b60405161034c9190613e7f565b60405180910390f35b34801561036157600080fd5b50610375610370366004613ea0565b610aa7565b005b34801561038357600080fd5b50610397610392366004613edd565b610b46565b604051901515815260200161034c565b3480156103b357600080fd5b50600a546103cd906201000090046001600160401b031681565b6040516001600160401b03909116815260200161034c565b3480156103f157600080fd5b50610375610400366004614042565b610b5d565b34801561041157600080fd5b5061041b600d5481565b60405190815260200161034c565b34801561043557600080fd5b50600a5461044d90600160b01b900463ffffffff1681565b60405163ffffffff909116815260200161034c565b34801561046e57600080fd5b5060035461041b565b34801561048357600080fd5b5061041b610e9e565b34801561049857600080fd5b5061033f6104a736600461407c565b610ec7565b3480156104b857600080fd5b506000546104cc906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156104f057600080fd5b506010546104cc906001600160a01b031681565b34801561051057600080fd5b5061037561051f366004614133565b610eea565b34801561053057600080fd5b5061039761053f36600461414c565b610f60565b34801561055057600080fd5b5061037561055f36600461418d565b611011565b34801561057057600080fd5b5061041b6110a7565b34801561058557600080fd5b506040516012815260200161034c565b3480156105a157600080fd5b506103976105b0366004613edd565b611147565b3480156105c157600080fd5b5061037561117e565b3480156105d657600080fd5b506103756105e536600461407c565b611373565b3480156105f657600080fd5b5061041b600c5481565b34801561060c57600080fd5b5061037561061b3660046141aa565b6117de565b61037561062e366004614133565b611957565b34801561063f57600080fd5b5061041b611afb565b34801561065457600080fd5b5061041b610663366004614133565b611b0d565b34801561067457600080fd5b5061041b60085481565b34801561068a57600080fd5b5061041b6106993660046141cf565b6001600160a01b031660009081526001602052604090205490565b3480156106c057600080fd5b506103756106cf366004614042565b611b37565b3480156106e057600080fd5b5061041b60115481565b3480156106f657600080fd5b5061041b60095481565b34801561070c57600080fd5b5061037561071b3660046141cf565b611fda565b34801561072c57600080fd5b5061033f612069565b34801561074157600080fd5b50600f546104cc906001600160a01b031681565b34801561076157600080fd5b50610397610770366004613edd565b612078565b34801561078157600080fd5b50600e546104cc906001600160a01b031681565b3480156107a157600080fd5b506103976107b0366004613edd565b612113565b6107c86107c33660046141ec565b612120565b60405161034c9190614260565b3480156107e157600080fd5b5061041b60075481565b3480156107f757600080fd5b506104cc610806366004614133565b6013602052600090815260409020546001600160a01b031681565b34801561082d57600080fd5b506103756122c5565b34801561084257600080fd5b5061041b61251d565b34801561085757600080fd5b50600a5461039790610100900460ff1681565b34801561087657600080fd5b5061037561088536600461407c565b612537565b34801561089657600080fd5b506006546104cc9061010090046001600160a01b031681565b3480156108bb57600080fd5b50600a546103cd90600160701b90046001600160401b031681565b3480156108e257600080fd5b50600a546103979060ff1681565b3480156108fc57600080fd5b5061037561090b36600461407c565b61272b565b34801561091c57600080fd5b5060065461044d90600160a81b900463ffffffff1681565b34801561094057600080fd5b5061041b61094f3660046142c2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561098657600080fd5b5061041b610995366004614133565b60126020526000908152604090205481565b3480156109b357600080fd5b506109c76109c2366004614133565b612918565b6040805192835260208301919091520161034c565b3480156109e857600080fd5b50600a5461044d90600160501b900463ffffffff1681565b348015610a0c57600080fd5b5061037561294f565b606060048054610a24906142f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610a50906142f0565b8015610a9d5780601f10610a7257610100808354040283529160200191610a9d565b820191906000526020600020905b815481529060010190602001808311610a8057829003601f168201915b5050505050905090565b600e546001600160a01b03163314610ada5760405162461bcd60e51b8152600401610ad19061432b565b60405180910390fd5b610ae261296f565b610aea6129c1565b600a80548215156101000261ff00199091161790556040517f1d492b98217ff50d005c548e0fa3a96dc38b2bafccaf5baedf42c112bd39fdfb90610b3390831515815260200190565b60405180910390a1610b436129cd565b50565b6000610b533384846129dc565b5060015b92915050565b600a54610100900460ff16610baa5760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610ad1565b610bb261296f565b610bba6129c1565b6703782dace9d900008260a001516001600160401b031611158015610bf457506703782dace9d900008260c001516001600160401b031611155b8015610c1157506706f05b59d3b20000816001600160401b031611155b610c4c5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ad1565b6000610c5783612b01565b60008181526012602052604090205490915015610cad5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610ad1565b6000610cb76110a7565b90506000610cc88560800151612b44565b905060006040518060e0016040528060016002811115610cea57610cea614362565b815233602082015260068054604090920191600160a81b900463ffffffff16906015610d158361438e565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018463ffffffff168152602001838152602001600b548152509050610d7081612b64565b600085815260126020526040812091909155610d8c8783612b77565b90508660800151600954600754610da391906143b2565b1015610ded5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610ad1565b6000600b5484610dfd91906143c9565b9050876080015160096000828254610e1591906143c9565b9250508190555080600d6000828254610e2e91906143c9565b9091555050600654610e509061010090046001600160a01b0316333084612bcb565b857fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be0898585604051610e84939291906144eb565b60405180910390a2505050505050610e9a6129cd565b5050565b6000610ea861296f565b610eb06129c1565b610eba6000612c3c565b9050610ec46129cd565b90565b6060610ed161296f565b610ee3610ede8484612b77565b612cca565b9392505050565b6000546001600160a01b0316610eff57600080fd5b60005460405163117c72b360e11b8152600481018390526001600160a01b03909116906322f8e56690602401600060405180830381600087803b158015610f4557600080fd5b505af1158015610f59573d6000803e3d6000fd5b5050505050565b6000610f6d848484612d07565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610ff25760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610ad1565b611006853361100186856143b2565b6129dc565b506001949350505050565b600e546001600160a01b0316331461103b5760405162461bcd60e51b8152600401610ad19061432b565b61104361296f565b61104b6129c1565b600a805469ffffffffffffffff00001916620100006001600160401b038481168202929092179283905560405192041681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a590602001610b33565b600080546001600160a01b0316156111425760008054906101000a90046001600160a01b03166001600160a01b03166329cb924d6040518163ffffffff1660e01b815260040160206040518083038186803b15801561110557600080fd5b505afa158015611119573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113d9190614517565b905090565b504290565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b539185906110019086906143c9565b61118661296f565b61118e6129c1565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156111dc57600080fd5b505afa1580156111f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112149190614530565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b15801561128857600080fd5b505afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c0919061454d565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b15801561132e57600080fd5b505afa158015611342573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113669190614517565b6011556113716129cd565b565b61137b61296f565b6113836129c1565b600061138e83612b01565b905061139a8183612edf565b6001825160028111156113af576113af614362565b146113ee5760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cd95d1d1b1959608a1b6044820152606401610ad1565b6000600a60169054906101000a900463ffffffff168360800151611412919061456a565b905061141c6110a7565b8163ffffffff1611156114665760405162461bcd60e51b8152602060048201526012602482015271139bdd081cd95d1d1b1958589b19481e595d60721b6044820152606401610ad1565b82602001516001600160a01b0316336001600160a01b031614806114a157506114918161038461456a565b63ffffffff1661149f6110a7565b115b6114e05760405162461bcd60e51b815260206004820152601060248201526f2737ba1039b637bb903932b630bcb2b960811b6044820152606401610ad1565b6040805160e0810190915261155490806002815260200185602001516001600160a01b03168152602001856040015163ffffffff16815260200185606001516001600160401b03168152602001856080015163ffffffff1681526020018560a0015181526020018560c00151815250612b64565b60008381526012602052604081209190915560a085015160608501516115879161157d91614592565b8660800151612f6c565b856080015161159691906143b2565b905060006115a48486612f94565b600081815260136020526040902054600a549192506001600160a01b03169060ff1680156115d957506001600160a01b038116155b156115f1576115ec876040015184612fbf565b611626565b6116266001600160a01b03821661160c57876040015161160e565b815b60065461010090046001600160a01b03169085613088565b600061163a8860a001518960800151612f6c565b905060008760a001518860c0015161165291906143c9565b60208901519091506001600160a01b031633141561169a5760208801516116959061167d83856143c9565b60065461010090046001600160a01b03169190613088565b6116d8565b60208801516006546116bc916101009091046001600160a01b03169083613088565b6006546116d89061010090046001600160a01b03163384613088565b60006116e483876143c9565b90508960800151600960008282546116fc91906143b2565b92505081905550806007600082825461171591906143b2565b92505081905550806008600082825461172e91906145b4565b9250508190555081600d600082825461174791906143b2565b9091555061175590506130b8565b61176f61176a8a606001518c60800151612f6c565b6130ff565b336001600160a01b0316887fcfdda74fce9fedb259e0f0a1ab1550e19b338488ece64976a4639e7fce0293a78b6040516117a991906145f5565b60405180910390a350505060009182525060136020526040902080546001600160a01b031916905550610e9a91506129cd9050565b6117e661296f565b6117ee6129c1565b8015806117fd5750600a5460ff165b6118395760405162461bcd60e51b815260206004820152600d60248201526c086c2dce840e6cadcc840cae8d609b1b6044820152606401610ad1565b6000670de0b6b3a764000061184c613132565b6118569085614603565b6118609190614638565b90508060095461187091906143c9565b60075410156118c15760405162461bcd60e51b815260206004820152601e60248201527f5574696c697a6174696f6e20746f6f206869676820746f2072656d6f766500006044820152606401610ad1565b6118cb33846131aa565b80600760008282546118dd91906143b2565b909155505081156118f7576118f23382612fbf565b611913565b6006546119139061010090046001600160a01b03163383613088565b604080518281526020810185905233917f0c54fc223ffd1a8f36652b5e83db4fff50f5ae151b11ceb56d5499b9f6e1fa18910160405180910390a250610e9a6129cd565b61195f61296f565b6119676129c1565b600a5460ff16801561197857508034145b80611981575034155b6119cd5760405162461bcd60e51b815260206004820152601b60248201527f42616420616464206c6971756964697479204574682076616c756500000000006044820152606401610ad1565b60006119d7613132565b6119e983670de0b6b3a7640000614603565b6119f39190614638565b90506119ff33826132f9565b8160076000828254611a1191906143c9565b90915550503415801590611a275750600a5460ff165b15611a9a57600660019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611a7c57600080fd5b505af1158015611a90573d6000803e3d6000fd5b5050505050611ab7565b600654611ab79061010090046001600160a01b0316333085612bcb565b604080518381526020810183905233917f0351f600ef1e31e5e13b4dc27bff4cbde3e9269f0ffc666629ae6cac573eb220910160405180910390a250610b436129cd565b6000611b0561296f565b61113d6133d8565b6000611b1761296f565b611b1f6129c1565b611b2882612c3c565b9050611b326129cd565b919050565b600a54610100900460ff16611b845760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610ad1565b611b8c61296f565b611b946129c1565b6000611b9e6110a7565b90506703782dace9d900008360a001516001600160401b031611158015611bda57506703782dace9d900008360c001516001600160401b031611155b8015611bf757506706f05b59d3b20000826001600160401b031611155b611c325760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610ad1565b6000611c3d84612b01565b60008181526012602052604090205490915015611c935760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610ad1565b6000611ca28560800151612b44565b905060006040518060e0016040528060016002811115611cc457611cc4614362565b815233602082015260068054604090920191600160a81b900463ffffffff16906015611cef8361438e565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018563ffffffff168152602001838152602001600b5481525090506000611d4d8783612b77565b9050611d5882612b64565b600085815260126020526040812091909155611d748584612f94565b6000818152601360205260409020549091506001600160a01b031615611dd65760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610ad1565b8760800151600954600754611deb91906143b2565b1015611e355760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610ad1565b6000600b5485611e4591906143c9565b90506000611e798a60c001518b60a001518760600151611e659190614592565b611e6f9190614592565b8b60800151612f6c565b90506000818b60800151611e8d91906143b2565b905082600d6000828254611ea191906143c9565b909155505060808b015160098054600090611ebd9084906143c9565b9091555050600084815260136020526040902080546001600160a01b03191633908117909155611f0b9030611ef286856143c9565b60065461010090046001600160a01b0316929190612bcb565b600a5460ff1615611f2957611f248b6040015182612fbf565b611f4b565b60408b0151600654611f4b916101009091046001600160a01b03169083613088565b877fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be08c8888604051611f7f939291906144eb565b60405180910390a2336001600160a01b0316887ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b88604051611fc191906145f5565b60405180910390a3505050505050505050610e9a6129cd565b600e546001600160a01b031633146120045760405162461bcd60e51b8152600401610ad19061432b565b61200c61296f565b6120146129c1565b600e80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f485a12424bd0c2c66a131c2681cb6c743b9573af3ae5f3014ef6ce7f55ab01929101610b33565b606060058054610a24906142f0565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156120fa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ad1565b612109338561100186856143b2565b5060019392505050565b6000610b53338484612d07565b606034156121705760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c756500000000006044820152606401610ad1565b816001600160401b0381111561218857612188613f09565b6040519080825280602002602001820160405280156121bb57816020015b60608152602001906001900390816121a65790505b50905060005b828110156122be57600080308686858181106121df576121df61465a565b90506020028101906121f19190614670565b6040516121ff9291906146bd565b600060405180830381855af49150503d806000811461223a576040519150601f19603f3d011682016040523d82523d6000602084013e61223f565b606091505b50915091508161228b5760448151101561225857600080fd5b6004810190508080602001905181019061227291906146cd565b60405162461bcd60e51b8152600401610ad19190613e7f565b8084848151811061229e5761229e61465a565b6020026020010181905250505080806122b69061476e565b9150506121c1565b5092915050565b6122cd61296f565b6122d56129c1565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b15801561231a57600080fd5b505afa15801561232e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123529190614789565b6040516302abf57960e61b815275536b696e6e794f7074696d69737469634f7261636c6560501b60048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156123ad57600080fd5b505afa1580156123c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e59190614789565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b15801561244157600080fd5b505afa158015612455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124799190614789565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b1580156124d857600080fd5b505afa1580156124ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061251091906147a6565b51600b55506113716129cd565b600061252761296f565b61252f6129c1565b610eba613132565b61253f61296f565b6125476129c1565b600061255283612b01565b905061255e8183612edf565b600061256a8284612f94565b9050600a60169054906101000a900463ffffffff16836080015161258e919061456a565b63ffffffff1661259c6110a7565b1080156125bb57506001835160028111156125b9576125b9614362565b145b80156125dc57506000818152601360205260409020546001600160a01b0316155b6126225760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610ad1565b600081815260136020526040812080546001600160a01b0319163317905560c085015160a08601516060860151612667929161265d91614592565b61157d9190614592565b9050600081866080015161267b91906143b2565b600a5490915060ff16156126b9576006546126a69061010090046001600160a01b0316333084612bcb565b6126b4866040015182612fbf565b6126dd565b60408601516006546126dd916101009091046001600160a01b031690339084612bcb565b336001600160a01b0316847ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b8760405161271791906145f5565b60405180910390a350505050610e9a6129cd565b61273361296f565b61273b6129c1565b6127436110a7565b600a54608083015161276291600160b01b900463ffffffff169061456a565b63ffffffff16116127a55760405162461bcd60e51b815260206004820152600d60248201526c50617374206c6976656e65737360981b6044820152606401610ad1565b6001815160028111156127ba576127ba614362565b146127f85760405162461bcd60e51b815260206004820152600e60248201526d4e6f742064697370757461626c6560901b6044820152606401610ad1565b600061280383612b01565b905061280f8183612edf565b600061281b8484612b77565b905060006128408460200151338660a001518760c0015161283b87612cca565b61344f565b90508360a001518460c0015161285691906143c9565b600d600082825461286791906143b2565b90915550506080850151600980546000906128839084906143b2565b909155505060008381526012602052604081205580156128d757336128a785612b64565b60405185907f29751133c2d0a0ea7a9da312248b12ef10ac4c20f4e3ab5eebbb80d853b3836790600090a461290d565b336128e185612b64565b60405185907f14173c4d3bd95e34f5c8f78729323444c9272bd21051e70045b64ed48f65818390600090a45b505050610e9a6129cd565b60008061292361296f565b61292b6129c1565b6129356000612c3c565b61293e84612c3c565b9150915061294a6129cd565b915091565b61295761296f565b61295f6129c1565b61296761378c565b6113716129cd565b60065460ff166113715760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610ad1565b6006805460ff19169055565b6006805460ff19166001179055565b6001600160a01b038316612a3e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ad1565b6001600160a01b038216612a9f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ad1565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654604051600091612b2791849161010090046001600160a01b0316906020016147e7565b604051602081830303815290604052805190602001209050919050565b600a54600090610b5790600160701b90046001600160401b031683612f6c565b600081604051602001612b2791906145f5565b60008282604001518360600151600660019054906101000a90046001600160a01b0316604051602001612bad949392919061480f565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612c369085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261384f565b50505050565b6000612c4661378c565b60008060085413612c58576000612c5c565b6008545b905060008160095485612c6f91906143c9565b612c7991906143c9565b9050600082600754612c8b91906143c9565b905080612ca45750670de0b6b3a7640000949350505050565b80612cb783670de0b6b3a7640000614603565b612cc19190614638565b95945050505050565b6060610b5760405180602001604052806000815250604051806040016040528060098152602001680e4cad8c2f290c2e6d60bb1b81525084613921565b6001600160a01b038316612d6b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad1565b6001600160a01b038216612dcd5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad1565b6001600160a01b03831660009081526001602052604090205481811015612e455760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ad1565b612e4f82826143b2565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290612e859084906143c9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612ed191815260200190565b60405180910390a350505050565b612ee881612b64565b60008381526012602052604090205414610e9a576040805162461bcd60e51b81526020600482015260248101919091527f4861736865642072656c617920706172616d7320646f206e6f74206d6174636860448201527f206578697374696e672072656c6179206861736820666f72206465706f7369746064820152608401610ad1565b6000670de0b6b3a7640000612f8a836001600160401b038616614603565b610ee39190614638565b6000828260600151604051602001612bad9291909182526001600160401b0316602082015260400190565b6001600160a01b0382163b15612feb57600654610e9a9061010090046001600160a01b03168383613088565b600654604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561303557600080fd5b505af1158015613049573d6000803e3d6000fd5b50506040516001600160a01b038516925083156108fc02915083906000818181858888f19350505050158015613083573d6000803e3d6000fd5b505050565b6040516001600160a01b03831660248201526044810182905261308390849063a9059cbb60e01b90606401612bff565b60006130c26133d8565b905080600c546130d291906143b2565b600c556130dd6110a7565b600a806101000a81548163ffffffff021916908363ffffffff16021790555050565b80600c600082825461311191906143c9565b92505081905550806008600082825461312a91906145b4565b909155505050565b600061313d60035490565b61314e5750670de0b6b3a764000090565b6131566130b8565b61315e61378c565b6000600c5460085460075461317391906145b4565b61317d9190614854565b905061318860035490565b61319a82670de0b6b3a7640000614603565b6131a49190614638565b91505090565b6001600160a01b03821661320a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ad1565b6001600160a01b0382166000908152600160205260409020548181101561327e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ad1565b61328882826143b2565b6001600160a01b038416600090815260016020526040812091909155600380548492906132b69084906143b2565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612af4565b6001600160a01b03821661334f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ad1565b806003600082825461336191906143c9565b90915550506001600160a01b0382166000908152600160205260408120805483929061338e9084906143c9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600a546000908190670de0b6b3a764000090600160501b900463ffffffff166133ff6110a7565b61340991906143b2565b600a54600c54613428916201000090046001600160401b031690614603565b6134329190614603565b61343c9190614638565b9050600c548110611b3257600c546131a4565b60008061345c85856143c9565b6010546006549192506134819161010090046001600160a01b03908116911683613967565b6010546011546001600160a01b039091169063af355d1e906134a16110a7565b86600660019054906101000a90046001600160a01b031660008b600a60169054906101000a900463ffffffff168f670de0b6b3a76400006040518a63ffffffff1660e01b81526004016134fc99989796959493929190614893565b602060405180830381600087803b15801561351657600080fd5b505af1925050508015613546575060408051601f3d908101601f1916820190925261354391810190614517565b60015b613593576006546135669061010090046001600160a01b03168883613088565b601054600654613589916001600160a01b03610100909204821691166000613967565b6000915050612cc1565b818110156135ee5760006135a782846143b2565b6006549091506135c69061010090046001600160a01b03168a83613088565b6010546006546135e9916001600160a01b03610100909204821691166000613967565b819250505b5060408051610160810182526001600160a01b03898116825260006020830181905260065461010090049091169282019290925260608101829052670de0b6b3a7640000608082015260a08101829052600a5460c0820190600160b01b900463ffffffff1661365b6110a7565b61366591906143c9565b81526000602082015260400161367b88856143b2565b815260208101889052600a54600160b01b900463ffffffff9081166040909201919091526006549192506136c49161010090046001600160a01b031690339030908690612bcb16565b6010546006546136e6916001600160a01b036101009092048216911684613967565b6010546011546001600160a01b0390911690639ce320c8906137066110a7565b87858c306040518763ffffffff1660e01b815260040161372b969594939291906148fe565b602060405180830381600087803b15801561374557600080fd5b505af1158015613759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377d9190614517565b50600198975050505050505050565b600d546006546040516370a0823160e01b81523060048201526000929161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156137d957600080fd5b505afa1580156137ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138119190614517565b61381b91906143b2565b9050600754811115610b435760075461383490826143b2565b600860008282546138459190614854565b9091555050600755565b60006138a4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a8b9092919063ffffffff16565b80519091501561308357808060200190518101906138c291906149f7565b6130835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ad1565b6060600061392f8585613aa2565b9050848161393c85613ae4565b60405160200161394e93929190614a14565b6040516020818303038152906040529150509392505050565b8015806139f05750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156139b657600080fd5b505afa1580156139ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139ee9190614517565b155b613a5b5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610ad1565b6040516001600160a01b03831660248201526044810182905261308390849063095ea7b360e01b90606401612bff565b6060613a9a8484600085613b24565b949350505050565b815160609015613ad35781604051602001613abd9190614a57565b6040516020818303038152906040529050610b57565b81604051602001613abd9190614a8b565b6060613af3608083901c613c4c565b613afc83613c4c565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b606082471015613b855760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ad1565b843b613bd35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ad1565b600080866001600160a01b03168587604051613bef9190614ab0565b60006040518083038185875af1925050503d8060008114613c2c576040519150601f19603f3d011682016040523d82523d6000602084013e613c31565b606091505b5091509150613c41828286613dee565b979650505050505050565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f08080808080808080808080808080808080808080808080808080808080808081681613d7057613d70614622565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b60608315613dfd575081610ee3565b825115613e0d5782518084602001fd5b8160405162461bcd60e51b8152600401610ad19190613e7f565b60005b83811015613e42578181015183820152602001613e2a565b83811115612c365750506000910152565b60008151808452613e6b816020860160208601613e27565b601f01601f19169290920160200192915050565b602081526000610ee36020830184613e53565b8015158114610b4357600080fd5b600060208284031215613eb257600080fd5b8135610ee381613e92565b6001600160a01b0381168114610b4357600080fd5b8035611b3281613ebd565b60008060408385031215613ef057600080fd5b8235613efb81613ebd565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613f4157613f41613f09565b60405290565b6001600160401b0381168114610b4357600080fd5b8035611b3281613f47565b63ffffffff81168114610b4357600080fd5b8035611b3281613f67565b6000610100808385031215613f9857600080fd5b604051908101906001600160401b0382118183101715613fba57613fba613f09565b816040528092508335815260208401359150613fd582613f47565b816020820152613fe760408501613ed2565b6040820152613ff860608501613ed2565b60608201526080840135608082015261401360a08501613f5c565b60a082015261402460c08501613f5c565b60c082015261403560e08501613f79565b60e0820152505092915050565b600080610120838503121561405657600080fd5b6140608484613f84565b915061010083013561407181613f47565b809150509250929050565b6000808284036101e081121561409157600080fd5b61409b8585613f84565b925060e060ff19820112156140af57600080fd5b506140b8613f1f565b610100840135600381106140cb57600080fd5b81526140da6101208501613ed2565b60208201526140ec6101408501613f79565b60408201526140fe6101608501613f5c565b60608201526141106101808501613f79565b60808201526101a084013560a08201526101c09093013560c08401525092909150565b60006020828403121561414557600080fd5b5035919050565b60008060006060848603121561416157600080fd5b833561416c81613ebd565b9250602084013561417c81613ebd565b929592945050506040919091013590565b60006020828403121561419f57600080fd5b8135610ee381613f47565b600080604083850312156141bd57600080fd5b82359150602083013561407181613e92565b6000602082840312156141e157600080fd5b8135610ee381613ebd565b600080602083850312156141ff57600080fd5b82356001600160401b038082111561421657600080fd5b818501915085601f83011261422a57600080fd5b81358181111561423957600080fd5b8660208260051b850101111561424e57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156142b557603f198886030184526142a3858351613e53565b94509285019290850190600101614287565b5092979650505050505050565b600080604083850312156142d557600080fd5b82356142e081613ebd565b9150602083013561407181613ebd565b600181811c9082168061430457607f821691505b6020821081141561432557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43616c6c6572206e6f74206272696467652061646d696e000000000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156143a8576143a8614378565b6001019392505050565b6000828210156143c4576143c4614378565b500390565b600082198211156143dc576143dc614378565b500190565b8051825260208101516001600160401b0380821660208501526040830151915060018060a01b03808316604086015280606085015116606086015250608083015160808501528060a08401511660a08501528060c08401511660c0850152505063ffffffff60e08201511660e08301525050565b80516003811061447557634e487b7160e01b600052602160045260246000fd5b82526020818101516001600160a01b031690830152604080820151906144a29084018263ffffffff169052565b5060608101516144bd60608401826001600160401b03169052565b5060808101516144d5608084018263ffffffff169052565b5060a0818101519083015260c090810151910152565b61020081016144fa82866143e1565b614508610100830185614455565b826101e0830152949350505050565b60006020828403121561452957600080fd5b5051919050565b60006020828403121561454257600080fd5b8151610ee381613f47565b60006020828403121561455f57600080fd5b8151610ee381613f67565b600063ffffffff80831681851680830382111561458957614589614378565b01949350505050565b60006001600160401b0380831681851680830382111561458957614589614378565b600080821280156001600160ff1b03849003851316156145d6576145d6614378565b600160ff1b83900384128116156145ef576145ef614378565b50500190565b60e08101610b578284614455565b600081600019048311821515161561461d5761461d614378565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261465557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261468757600080fd5b8301803591506001600160401b038211156146a157600080fd5b6020019150368190038213156146b657600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156146df57600080fd5b81516001600160401b03808211156146f657600080fd5b818401915084601f83011261470a57600080fd5b81518181111561471c5761471c613f09565b604051601f8201601f19908116603f0116810190838211818310171561474457614744613f09565b8160405282815287602084870101111561475d57600080fd5b613c41836020830160208801613e27565b600060001982141561478257614782614378565b5060010190565b60006020828403121561479b57600080fd5b8151610ee381613ebd565b6000602082840312156147b857600080fd5b604051602081018181106001600160401b03821117156147da576147da613f09565b6040529151825250919050565b61012081016147f682856143e1565b6001600160a01b03929092166101009190910152919050565b610160810161481e82876143e1565b63ffffffff949094166101008201526001600160401b03929092166101208301526001600160a01b031661014090910152919050565b60008083128015600160ff1b85018412161561487257614872614378565b6001600160ff1b038401831381161561488d5761488d614378565b50500390565b60006101208b835263ffffffff808c1660208501528160408501526148ba8285018c613e53565b6001600160a01b039a8b166060860152608085019990995260a084019790975250509290931660c083015290931660e0840152610100909201919091529392505050565b600061020088835263ffffffff8816602084015280604084015261492481840188613e53565b91505061493d6060830186516001600160a01b03169052565b60208501516001600160a01b03811660808401525060408501516001600160a01b03811660a084015250606085015180151560c084015250608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015161016087015281890151610180870152808901516101a0870152505050506149e26101c08301856001600160a01b03169052565b6001600160a01b0383166101e0830152613c41565b600060208284031215614a0957600080fd5b8151610ee381613e92565b60008451614a26818460208901613e27565b845190830190614a3a818360208901613e27565b8451910190614a4d818360208801613e27565b0195945050505050565b600b60fa1b815260008251614a73816001850160208701613e27565b601d60f91b6001939091019283015250600201919050565b60008251614a9d818460208701613e27565b601d60f91b920191825250600101919050565b60008251614ac2818460208701613e27565b919091019291505056fea26469706673582212204714f4b2be10563baa241274ea1a6efe24cdfb5845d64a1fdefb484a5895776d64736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x31E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0xB5351EE2 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xCEFED55F GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDF738FC8 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xDF738FC8 EQ PUSH2 0x97A JUMPI DUP1 PUSH4 0xED4DE3A3 EQ PUSH2 0x9A7 JUMPI DUP1 PUSH4 0xF1D24BAB EQ PUSH2 0x9DC JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0xA00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCEFED55F EQ PUSH2 0x8F0 JUMPI DUP1 PUSH4 0xD412F5A4 EQ PUSH2 0x910 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x934 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBEC73ADE GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xBEC73ADE EQ PUSH2 0x86A JUMPI DUP1 PUSH4 0xC01E1BD6 EQ PUSH2 0x88A JUMPI DUP1 PUSH4 0xC73A32C3 EQ PUSH2 0x8AF JUMPI DUP1 PUSH4 0xCC2C929E EQ PUSH2 0x8D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB5351EE2 EQ PUSH2 0x821 JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0x836 JUMPI DUP1 PUSH4 0xBE0BA122 EQ PUSH2 0x84B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x975057E7 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x795 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x7B5 JUMPI DUP1 PUSH4 0xB2084202 EQ PUSH2 0x7D5 JUMPI DUP1 PUSH4 0xB454E326 EQ PUSH2 0x7EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x975057E7 EQ PUSH2 0x735 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x755 JUMPI DUP1 PUSH4 0xA6AF2DFE EQ PUSH2 0x775 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x67E JUMPI DUP1 PUSH4 0x753B91BB EQ PUSH2 0x6B4 JUMPI DUP1 PUSH4 0x7998A1C4 EQ PUSH2 0x6D4 JUMPI DUP1 PUSH4 0x87A515D3 EQ PUSH2 0x6EA JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x700 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x720 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x26A JUMPI DUP1 PUSH4 0x3FA856C9 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x51C6590A GT PUSH2 0x1FD JUMPI DUP1 PUSH4 0x51C6590A EQ PUSH2 0x620 JUMPI DUP1 PUSH4 0x5DF45A37 EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0x62822D34 EQ PUSH2 0x648 JUMPI DUP1 PUSH4 0x66DB5240 EQ PUSH2 0x668 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3FA856C9 EQ PUSH2 0x5CA JUMPI DUP1 PUSH4 0x4464FAE4 EQ PUSH2 0x5EA JUMPI DUP1 PUSH4 0x4F52FD17 EQ PUSH2 0x600 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x524 JUMPI DUP1 PUSH4 0x27F224CA EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x579 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x595 JUMPI DUP1 PUSH4 0x3CC400B3 EQ PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x173684C5 GT PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x1BF71C38 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x1BF71C38 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x22302922 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x173684C5 EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x19E9D894 EQ PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x8ED5B14 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x11CFC159 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x13111725 EQ PUSH2 0x3E5 JUMPI DUP1 PUSH4 0x135C404E EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x325 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0xA15 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0x3E7F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x370 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EA0 JUMP JUMPDEST PUSH2 0xAA7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDD JUMP JUMPDEST PUSH2 0xB46 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x3CD SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x4042 JUMP JUMPDEST PUSH2 0xB5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3 SLOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0xE9E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0x4A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x407C JUMP JUMPDEST PUSH2 0xEC7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x10 SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x51F CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH2 0xEEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x53F CALLDATASIZE PUSH1 0x4 PUSH2 0x414C JUMP JUMPDEST PUSH2 0xF60 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x418D JUMP JUMPDEST PUSH2 0x1011 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x10A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x5B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDD JUMP JUMPDEST PUSH2 0x1147 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x117E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x5E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x407C JUMP JUMPDEST PUSH2 0x1373 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x61B CALLDATASIZE PUSH1 0x4 PUSH2 0x41AA JUMP JUMPDEST PUSH2 0x17DE JUMP JUMPDEST PUSH2 0x375 PUSH2 0x62E CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH2 0x1957 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x1AFB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x654 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x663 CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH2 0x1B0D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x674 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x699 CALLDATASIZE PUSH1 0x4 PUSH2 0x41CF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x6CF CALLDATASIZE PUSH1 0x4 PUSH2 0x4042 JUMP JUMPDEST PUSH2 0x1B37 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x71B CALLDATASIZE PUSH1 0x4 PUSH2 0x41CF JUMP JUMPDEST PUSH2 0x1FDA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0x2069 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x741 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x770 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDD JUMP JUMPDEST PUSH2 0x2078 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x781 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xE SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x7B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EDD JUMP JUMPDEST PUSH2 0x2113 JUMP JUMPDEST PUSH2 0x7C8 PUSH2 0x7C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x41EC JUMP JUMPDEST PUSH2 0x2120 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0x4260 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4CC PUSH2 0x806 CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x22C5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x842 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x251D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x857 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x397 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x876 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x885 CALLDATASIZE PUSH1 0x4 PUSH2 0x407C JUMP JUMPDEST PUSH2 0x2537 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x896 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x4CC SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x3CD SWAP1 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x397 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x90B CALLDATASIZE PUSH1 0x4 PUSH2 0x407C JUMP JUMPDEST PUSH2 0x272B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x940 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x94F CALLDATASIZE PUSH1 0x4 PUSH2 0x42C2 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 CALLVALUE DUP1 ISZERO PUSH2 0x986 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x995 CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C7 PUSH2 0x9C2 CALLDATASIZE PUSH1 0x4 PUSH2 0x4133 JUMP JUMPDEST PUSH2 0x2918 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0x50 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x294F JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0xA24 SWAP1 PUSH2 0x42F0 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA50 SWAP1 PUSH2 0x42F0 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA9D JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA72 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA9D 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 0xA80 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xADA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD1 SWAP1 PUSH2 0x432B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAE2 PUSH2 0x296F JUMP JUMPDEST PUSH2 0xAEA PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD DUP3 ISZERO ISZERO PUSH2 0x100 MUL PUSH2 0xFF00 NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x1D492B98217FF50D005C548E0FA3A96DC38B2BAFCCAF5BAEDF42C112BD39FDFB SWAP1 PUSH2 0xB33 SWAP1 DUP4 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xB43 PUSH2 0x29CD JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB53 CALLER DUP5 DUP5 PUSH2 0x29DC JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBAA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x14995B185E5CC8185C9948191A5CD8589B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0xBB2 PUSH2 0x296F JUMP JUMPDEST PUSH2 0xBBA PUSH2 0x29C1 JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP3 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0xBF4 JUMPI POP PUSH8 0x3782DACE9D90000 DUP3 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC11 JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x496E76616C69642066656573 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC57 DUP4 PUSH2 0x2B01 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xCAD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x50656E64696E672072656C617920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xCB7 PUSH2 0x10A7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xCC8 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x2B44 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xCEA JUMPI PUSH2 0xCEA PUSH2 0x4362 JUMP JUMPDEST DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x15 PUSH2 0xD15 DUP4 PUSH2 0x438E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB SLOAD DUP2 MSTORE POP SWAP1 POP PUSH2 0xD70 DUP2 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xD8C DUP8 DUP4 PUSH2 0x2B77 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH2 0xDA3 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST LT ISZERO PUSH2 0xDED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x496E73756666696369656E7420706F6F6C2062616C616E6365 PUSH1 0x38 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD DUP5 PUSH2 0xDFD SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE15 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE2E SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x6 SLOAD PUSH2 0xE50 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH2 0x2BCB JUMP JUMPDEST DUP6 PUSH32 0xA4CA36D112520CCED74325C72711F376FE4015665829D879BA21590CB8130BE0 DUP10 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xE84 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x44EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEA8 PUSH2 0x296F JUMP JUMPDEST PUSH2 0xEB0 PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0xEBA PUSH1 0x0 PUSH2 0x2C3C JUMP JUMPDEST SWAP1 POP PUSH2 0xEC4 PUSH2 0x29CD JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xED1 PUSH2 0x296F JUMP JUMPDEST PUSH2 0xEE3 PUSH2 0xEDE DUP5 DUP5 PUSH2 0x2B77 JUMP JUMPDEST PUSH2 0x2CCA JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x117C72B3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF59 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF6D DUP5 DUP5 DUP5 PUSH2 0x2D07 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 0xFF2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6C6C6F77616E6365 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x1006 DUP6 CALLER PUSH2 0x1001 DUP7 DUP6 PUSH2 0x43B2 JUMP JUMPDEST PUSH2 0x29DC JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x103B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD1 SWAP1 PUSH2 0x432B JUMP JUMPDEST PUSH2 0x1043 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x104B PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH10 0xFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND DUP2 MSTORE PUSH32 0x958B6B3E25D854F9E658CD5610BD9D184123D203F58F95ADF261E0D7D0DD65A5 SWAP1 PUSH1 0x20 ADD PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1142 JUMPI PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x29CB924D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1119 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 0x113D SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST POP TIMESTAMP SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0xB53 SWAP2 DUP6 SWAP1 PUSH2 0x1001 SWAP1 DUP7 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH2 0x1186 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x118E PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC73A32C3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11F0 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 0x1214 SWAP2 SWAP1 PUSH2 0x4530 JUMP JUMPDEST PUSH1 0xA PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173684C5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x129C 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 0x12C0 SWAP2 SWAP1 PUSH2 0x454D JUMP JUMPDEST PUSH1 0xA PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7998A1C4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x132E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1342 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 0x1366 SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x11 SSTORE PUSH2 0x1371 PUSH2 0x29CD JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x137B PUSH2 0x296F JUMP JUMPDEST PUSH2 0x1383 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x138E DUP4 PUSH2 0x2B01 JUMP JUMPDEST SWAP1 POP PUSH2 0x139A DUP2 DUP4 PUSH2 0x2EDF JUMP JUMPDEST PUSH1 0x1 DUP3 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x13AF JUMPI PUSH2 0x13AF PUSH2 0x4362 JUMP JUMPDEST EQ PUSH2 0x13EE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481CD95D1D1B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x1412 SWAP2 SWAP1 PUSH2 0x456A JUMP JUMPDEST SWAP1 POP PUSH2 0x141C PUSH2 0x10A7 JUMP JUMPDEST DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x1466 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x139BDD081CD95D1D1B1958589B19481E595D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x14A1 JUMPI POP PUSH2 0x1491 DUP2 PUSH2 0x384 PUSH2 0x456A JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x149F PUSH2 0x10A7 JUMP JUMPDEST GT JUMPDEST PUSH2 0x14E0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x2737BA1039B637BB903932B630BCB2B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x1554 SWAP1 DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x1587 SWAP2 PUSH2 0x157D SWAP2 PUSH2 0x4592 JUMP JUMPDEST DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2F6C JUMP JUMPDEST DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x1596 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x15A4 DUP5 DUP7 PUSH2 0x2F94 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xA SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x15D9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x15F1 JUMPI PUSH2 0x15EC DUP8 PUSH1 0x40 ADD MLOAD DUP5 PUSH2 0x2FBF JUMP JUMPDEST PUSH2 0x1626 JUMP JUMPDEST PUSH2 0x1626 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x160C JUMPI DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x160E JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x163A DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD PUSH2 0x2F6C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH1 0xA0 ADD MLOAD DUP9 PUSH1 0xC0 ADD MLOAD PUSH2 0x1652 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x169A JUMPI PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x1695 SWAP1 PUSH2 0x167D DUP4 DUP6 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x3088 JUMP JUMPDEST PUSH2 0x16D8 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x16BC SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x16D8 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP5 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16E4 DUP4 DUP8 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x80 ADD MLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x16FC SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1715 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x172E SWAP2 SWAP1 PUSH2 0x45B4 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1747 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x1755 SWAP1 POP PUSH2 0x30B8 JUMP JUMPDEST PUSH2 0x176F PUSH2 0x176A DUP11 PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x2F6C JUMP JUMPDEST PUSH2 0x30FF JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH32 0xCFDDA74FCE9FEDB259E0F0A1AB1550E19B338488ECE64976A4639E7FCE0293A7 DUP12 PUSH1 0x40 MLOAD PUSH2 0x17A9 SWAP2 SWAP1 PUSH2 0x45F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE POP PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE POP PUSH2 0xE9A SWAP2 POP PUSH2 0x29CD SWAP1 POP JUMP JUMPDEST PUSH2 0x17E6 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x17EE PUSH2 0x29C1 JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x17FD JUMPI POP PUSH1 0xA SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1839 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x86C2DCE840E6CADCC840CAE8D PUSH1 0x9B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x184C PUSH2 0x3132 JUMP JUMPDEST PUSH2 0x1856 SWAP1 DUP6 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x1860 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x9 SLOAD PUSH2 0x1870 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x7 SLOAD LT ISZERO PUSH2 0x18C1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5574696C697A6174696F6E20746F6F206869676820746F2072656D6F76650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x18CB CALLER DUP5 PUSH2 0x31AA JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x18DD SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 ISZERO PUSH2 0x18F7 JUMPI PUSH2 0x18F2 CALLER DUP3 PUSH2 0x2FBF JUMP JUMPDEST PUSH2 0x1913 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x1913 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH32 0xC54FC223FFD1A8F36652B5E83DB4FFF50F5AE151B11CEB56D5499B9F6E1FA18 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST PUSH2 0x195F PUSH2 0x296F JUMP JUMPDEST PUSH2 0x1967 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1978 JUMPI POP DUP1 CALLVALUE EQ JUMPDEST DUP1 PUSH2 0x1981 JUMPI POP CALLVALUE ISZERO JUMPDEST PUSH2 0x19CD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616420616464206C6971756964697479204574682076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19D7 PUSH2 0x3132 JUMP JUMPDEST PUSH2 0x19E9 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x19F3 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP1 POP PUSH2 0x19FF CALLER DUP3 PUSH2 0x32F9 JUMP JUMPDEST DUP2 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1A11 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP CALLVALUE ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1A27 JUMPI POP PUSH1 0xA SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x1A9A JUMPI PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 CALLVALUE 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 0x1A7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1A90 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1AB7 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x1AB7 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP6 PUSH2 0x2BCB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x351F600EF1E31E5E13B4DC27BFF4CBDE3E9269F0FFC666629AE6CAC573EB220 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xB43 PUSH2 0x29CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B05 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x113D PUSH2 0x33D8 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B17 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x1B1F PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x1B28 DUP3 PUSH2 0x2C3C JUMP JUMPDEST SWAP1 POP PUSH2 0x1B32 PUSH2 0x29CD JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1B84 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x14995B185E5CC8185C9948191A5CD8589B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x1B8C PUSH2 0x296F JUMP JUMPDEST PUSH2 0x1B94 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B9E PUSH2 0x10A7 JUMP JUMPDEST SWAP1 POP PUSH8 0x3782DACE9D90000 DUP4 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0x1BDA JUMPI POP PUSH8 0x3782DACE9D90000 DUP4 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1BF7 JUMPI POP PUSH8 0x6F05B59D3B20000 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0x1C32 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x496E76616C69642066656573 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1C3D DUP5 PUSH2 0x2B01 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1C93 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x50656E64696E672072656C617920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CA2 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x2B44 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1CC4 JUMPI PUSH2 0x1CC4 PUSH2 0x4362 JUMP JUMPDEST DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x15 PUSH2 0x1CEF DUP4 PUSH2 0x438E JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB SLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0x1D4D DUP8 DUP4 PUSH2 0x2B77 JUMP JUMPDEST SWAP1 POP PUSH2 0x1D58 DUP3 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1D74 DUP6 DUP5 PUSH2 0x2F94 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1DD6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x52656C61792063616E6E6F74206265207370656420757 PUSH1 0x4C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH2 0x1DEB SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST LT ISZERO PUSH2 0x1E35 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x496E73756666696369656E7420706F6F6C2062616C616E6365 PUSH1 0x38 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD DUP6 PUSH2 0x1E45 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E79 DUP11 PUSH1 0xC0 ADD MLOAD DUP12 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x1E65 SWAP2 SWAP1 PUSH2 0x4592 JUMP JUMPDEST PUSH2 0x1E6F SWAP2 SWAP1 PUSH2 0x4592 JUMP JUMPDEST DUP12 PUSH1 0x80 ADD MLOAD PUSH2 0x2F6C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x80 ADD MLOAD PUSH2 0x1E8D SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1EA1 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1EBD SWAP1 DUP5 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x1F0B SWAP1 ADDRESS PUSH2 0x1EF2 DUP7 DUP6 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x2BCB JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1F29 JUMPI PUSH2 0x1F24 DUP12 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x2FBF JUMP JUMPDEST PUSH2 0x1F4B JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x1F4B SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0x3088 JUMP JUMPDEST DUP8 PUSH32 0xA4CA36D112520CCED74325C72711F376FE4015665829D879BA21590CB8130BE0 DUP13 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x1F7F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x44EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH32 0xF98CDDC88BC965917007822B05056CB92BC9DDF0F8BCC61678400CB78313BB4B DUP9 PUSH1 0x40 MLOAD PUSH2 0x1FC1 SWAP2 SWAP1 PUSH2 0x45F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2004 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD1 SWAP1 PUSH2 0x432B JUMP JUMPDEST PUSH2 0x200C PUSH2 0x296F JUMP JUMPDEST PUSH2 0x2014 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x485A12424BD0C2C66A131C2681CB6C743B9573AF3AE5F3014EF6CE7F55AB0192 SWAP2 ADD PUSH2 0xB33 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD PUSH2 0xA24 SWAP1 PUSH2 0x42F0 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x20FA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x2109 CALLER DUP6 PUSH2 0x1001 DUP7 DUP6 PUSH2 0x43B2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB53 CALLER DUP5 DUP5 PUSH2 0x2D07 JUMP JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0x2170 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2188 JUMPI PUSH2 0x2188 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x21BB JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x21A6 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x22BE JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x21DF JUMPI PUSH2 0x21DF PUSH2 0x465A JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x21F1 SWAP2 SWAP1 PUSH2 0x4670 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21FF SWAP3 SWAP2 SWAP1 PUSH2 0x46BD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x223A 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 0x223F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x228B JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x2258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2272 SWAP2 SWAP1 PUSH2 0x46CD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xAD1 SWAP2 SWAP1 PUSH2 0x3E7F JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x229E JUMPI PUSH2 0x229E PUSH2 0x465A JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x22B6 SWAP1 PUSH2 0x476E JUMP JUMPDEST SWAP2 POP POP PUSH2 0x21C1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x22CD PUSH2 0x296F JUMP JUMPDEST PUSH2 0x22D5 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E68F213 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB9A3C84C SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x231A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x232E 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 0x2352 SWAP2 SWAP1 PUSH2 0x4789 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH22 0x536B696E6E794F7074696D69737469634F7261636C65 PUSH1 0x50 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x23C1 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 0x23E5 SWAP2 SWAP1 PUSH2 0x4789 JUMP JUMPDEST PUSH1 0x10 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH5 0x53746F7265 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2455 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 0x2479 SWAP2 SWAP1 PUSH2 0x4789 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5B97AADD PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 PUSH4 0x5B97AADD SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x24EC 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 0x2510 SWAP2 SWAP1 PUSH2 0x47A6 JUMP JUMPDEST MLOAD PUSH1 0xB SSTORE POP PUSH2 0x1371 PUSH2 0x29CD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2527 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x252F PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0xEBA PUSH2 0x3132 JUMP JUMPDEST PUSH2 0x253F PUSH2 0x296F JUMP JUMPDEST PUSH2 0x2547 PUSH2 0x29C1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2552 DUP4 PUSH2 0x2B01 JUMP JUMPDEST SWAP1 POP PUSH2 0x255E DUP2 DUP4 PUSH2 0x2EDF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x256A DUP3 DUP5 PUSH2 0x2F94 JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x258E SWAP2 SWAP1 PUSH2 0x456A JUMP JUMPDEST PUSH4 0xFFFFFFFF AND PUSH2 0x259C PUSH2 0x10A7 JUMP JUMPDEST LT DUP1 ISZERO PUSH2 0x25BB JUMPI POP PUSH1 0x1 DUP4 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x25B9 JUMPI PUSH2 0x25B9 PUSH2 0x4362 JUMP JUMPDEST EQ JUMPDEST DUP1 ISZERO PUSH2 0x25DC JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST PUSH2 0x2622 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x52656C61792063616E6E6F74206265207370656420757 PUSH1 0x4C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH2 0x2667 SWAP3 SWAP2 PUSH2 0x265D SWAP2 PUSH2 0x4592 JUMP JUMPDEST PUSH2 0x157D SWAP2 SWAP1 PUSH2 0x4592 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x267B SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0xA SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0x26B9 JUMPI PUSH1 0x6 SLOAD PUSH2 0x26A6 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH2 0x2BCB JUMP JUMPDEST PUSH2 0x26B4 DUP7 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x2FBF JUMP JUMPDEST PUSH2 0x26DD JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x26DD SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLER SWAP1 DUP5 PUSH2 0x2BCB JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xF98CDDC88BC965917007822B05056CB92BC9DDF0F8BCC61678400CB78313BB4B DUP8 PUSH1 0x40 MLOAD PUSH2 0x2717 SWAP2 SWAP1 PUSH2 0x45F5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST PUSH2 0x2733 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x273B PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x2743 PUSH2 0x10A7 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x2762 SWAP2 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH2 0x456A JUMP JUMPDEST PUSH4 0xFFFFFFFF AND GT PUSH2 0x27A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x50617374206C6976656E657373 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x1 DUP2 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x27BA JUMPI PUSH2 0x27BA PUSH2 0x4362 JUMP JUMPDEST EQ PUSH2 0x27F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x4E6F742064697370757461626C65 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2803 DUP4 PUSH2 0x2B01 JUMP JUMPDEST SWAP1 POP PUSH2 0x280F DUP2 DUP4 PUSH2 0x2EDF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x281B DUP5 DUP5 PUSH2 0x2B77 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2840 DUP5 PUSH1 0x20 ADD MLOAD CALLER DUP7 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0xC0 ADD MLOAD PUSH2 0x283B DUP8 PUSH2 0x2CCA JUMP JUMPDEST PUSH2 0x344F JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0xA0 ADD MLOAD DUP5 PUSH1 0xC0 ADD MLOAD PUSH2 0x2856 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x2867 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x2883 SWAP1 DUP5 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE DUP1 ISZERO PUSH2 0x28D7 JUMPI CALLER PUSH2 0x28A7 DUP6 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0x29751133C2D0A0EA7A9DA312248B12EF10AC4C20F4E3AB5EEBBB80D853B38367 SWAP1 PUSH1 0x0 SWAP1 LOG4 PUSH2 0x290D JUMP JUMPDEST CALLER PUSH2 0x28E1 DUP6 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0x14173C4D3BD95E34F5C8F78729323444C9272BD21051E70045B64ED48F658183 SWAP1 PUSH1 0x0 SWAP1 LOG4 JUMPDEST POP POP POP PUSH2 0xE9A PUSH2 0x29CD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2923 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x292B PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x2935 PUSH1 0x0 PUSH2 0x2C3C JUMP JUMPDEST PUSH2 0x293E DUP5 PUSH2 0x2C3C JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x294A PUSH2 0x29CD JUMP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x2957 PUSH2 0x296F JUMP JUMPDEST PUSH2 0x295F PUSH2 0x29C1 JUMP JUMPDEST PUSH2 0x2967 PUSH2 0x378C JUMP JUMPDEST PUSH2 0x1371 PUSH2 0x29CD JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH2 0x1371 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2A3E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2A9F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 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 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH2 0x2B27 SWAP2 DUP5 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD PUSH2 0x47E7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB57 SWAP1 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP4 PUSH2 0x2F6C JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2B27 SWAP2 SWAP1 PUSH2 0x45F5 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BAD SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x480F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x2C36 SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH1 0x84 ADD 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 0x384F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C46 PUSH2 0x378C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD SGT PUSH2 0x2C58 JUMPI PUSH1 0x0 PUSH2 0x2C5C JUMP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x9 SLOAD DUP6 PUSH2 0x2C6F SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST PUSH2 0x2C79 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x7 SLOAD PUSH2 0x2C8B SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2CA4 JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x2CB7 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x2CC1 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB57 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH9 0xE4CAD8C2F290C2E6D PUSH1 0xBB SHL DUP2 MSTORE POP DUP5 PUSH2 0x3921 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2D6B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2DCD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 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 0x2E45 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x2E4F DUP3 DUP3 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x2E85 SWAP1 DUP5 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x2ED1 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x2EE8 DUP2 PUSH2 0x2B64 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0xE9A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x4861736865642072656C617920706172616D7320646F206E6F74206D61746368 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206578697374696E672072656C6179206861736820666F72206465706F736974 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2F8A DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND PUSH2 0x4603 JUMP JUMPDEST PUSH2 0xEE3 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2BAD SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO PUSH2 0x2FEB JUMPI PUSH1 0x6 SLOAD PUSH2 0xE9A SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3035 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3049 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND 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 0x3083 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x3083 SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2BFF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x30C2 PUSH2 0x33D8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xC SLOAD PUSH2 0x30D2 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0xC SSTORE PUSH2 0x30DD PUSH2 0x10A7 JUMP JUMPDEST PUSH1 0xA DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP JUMP JUMPDEST DUP1 PUSH1 0xC PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3111 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x312A SWAP2 SWAP1 PUSH2 0x45B4 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x313D PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x314E JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST PUSH2 0x3156 PUSH2 0x30B8 JUMP JUMPDEST PUSH2 0x315E PUSH2 0x378C JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0x3173 SWAP2 SWAP1 PUSH2 0x45B4 JUMP JUMPDEST PUSH2 0x317D SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST SWAP1 POP PUSH2 0x3188 PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x319A DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x31A4 SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x320A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 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 0x327E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH2 0x3288 DUP3 DUP3 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x32B6 SWAP1 DUP5 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x2AF4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x334F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3361 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x338E SWAP1 DUP5 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH1 0x1 PUSH1 0x50 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x33FF PUSH2 0x10A7 JUMP JUMPDEST PUSH2 0x3409 SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xC SLOAD PUSH2 0x3428 SWAP2 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x3432 SWAP2 SWAP1 PUSH2 0x4603 JUMP JUMPDEST PUSH2 0x343C SWAP2 SWAP1 PUSH2 0x4638 JUMP JUMPDEST SWAP1 POP PUSH1 0xC SLOAD DUP2 LT PUSH2 0x1B32 JUMPI PUSH1 0xC SLOAD PUSH2 0x31A4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x345C DUP6 DUP6 PUSH2 0x43C9 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD SWAP2 SWAP3 POP PUSH2 0x3481 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xAF355D1E SWAP1 PUSH2 0x34A1 PUSH2 0x10A7 JUMP JUMPDEST DUP7 PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP12 PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP16 PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x34FC SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4893 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3516 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3546 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3543 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x3593 JUMPI PUSH1 0x6 SLOAD PUSH2 0x3566 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x3589 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND PUSH1 0x0 PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x2CC1 JUMP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x35EE JUMPI PUSH1 0x0 PUSH2 0x35A7 DUP3 DUP5 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH2 0x35C6 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP4 PUSH2 0x3088 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x35E9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND PUSH1 0x0 PUSH2 0x3967 JUMP JUMPDEST DUP2 SWAP3 POP POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA SLOAD PUSH1 0xC0 DUP3 ADD SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND PUSH2 0x365B PUSH2 0x10A7 JUMP JUMPDEST PUSH2 0x3665 SWAP2 SWAP1 PUSH2 0x43C9 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x367B DUP9 DUP6 PUSH2 0x43B2 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x6 SLOAD SWAP2 SWAP3 POP PUSH2 0x36C4 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH2 0x2BCB AND JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x36E6 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND DUP5 PUSH2 0x3967 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x9CE320C8 SWAP1 PUSH2 0x3706 PUSH2 0x10A7 JUMP JUMPDEST DUP8 DUP6 DUP13 ADDRESS PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x372B SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x48FE JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3745 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3759 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 0x377D SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST POP PUSH1 0x1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x37D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x37ED 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 0x3811 SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST PUSH2 0x381B SWAP2 SWAP1 PUSH2 0x43B2 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 SLOAD DUP2 GT ISZERO PUSH2 0xB43 JUMPI PUSH1 0x7 SLOAD PUSH2 0x3834 SWAP1 DUP3 PUSH2 0x43B2 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3845 SWAP2 SWAP1 PUSH2 0x4854 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38A4 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3A8B SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x3083 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x38C2 SWAP2 SWAP1 PUSH2 0x49F7 JUMP JUMPDEST PUSH2 0x3083 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x392F DUP6 DUP6 PUSH2 0x3AA2 JUMP JUMPDEST SWAP1 POP DUP5 DUP2 PUSH2 0x393C DUP6 PUSH2 0x3AE4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x394E SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4A14 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x39F0 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x39B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x39CA 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 0x39EE SWAP2 SWAP1 PUSH2 0x4517 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x3A5B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x3083 SWAP1 DUP5 SWAP1 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2BFF JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3A9A DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x3B24 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x60 SWAP1 ISZERO PUSH2 0x3AD3 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ABD SWAP2 SWAP1 PUSH2 0x4A57 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xB57 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3ABD SWAP2 SWAP1 PUSH2 0x4A8B JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3AF3 PUSH1 0x80 DUP4 SWAP1 SHR PUSH2 0x3C4C JUMP JUMPDEST PUSH2 0x3AFC DUP4 PUSH2 0x3C4C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x3B85 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xAD1 JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x3BD3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xAD1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x3BEF SWAP2 SWAP1 PUSH2 0x4AB0 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 0x3C2C 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 0x3C31 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3C41 DUP3 DUP3 DUP7 PUSH2 0x3DEE JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x0 SHR SWAP1 POP DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH9 0x10000000000000000 MUL DUP2 OR PUSH24 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH5 0x100000000 MUL DUP2 OR PUSH28 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF AND SWAP1 POP DUP1 PUSH3 0x10000 MUL DUP2 OR PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND SWAP1 POP DUP1 PUSH2 0x100 MUL DUP2 OR PUSH31 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF AND SWAP1 POP DUP1 PUSH1 0x10 MUL DUP2 OR PUSH32 0xF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F AND SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP3 PUSH32 0x808080808080808080808080808080808080808080808080808080808080808 AND DUP2 PUSH2 0x3D70 JUMPI PUSH2 0x3D70 PUSH2 0x4622 JUMP JUMPDEST DIV PUSH1 0x4 PUSH32 0x404040404040404040404040404040404040404040404040404040404040404 DUP5 AND DIV PUSH1 0x2 PUSH32 0x202020202020202020202020202020202020202020202020202020202020202 DUP6 AND DIV OR AND PUSH1 0x27 MUL SWAP1 SWAP2 ADD PUSH32 0x3030303030303030303030303030303030303030303030303030303030303030 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3DFD JUMPI POP DUP2 PUSH2 0xEE3 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3E0D 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 0xAD1 SWAP2 SWAP1 PUSH2 0x3E7F JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3E42 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3E2A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2C36 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3E6B DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xEE3 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3E53 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE3 DUP2 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1B32 DUP2 PUSH2 0x3EBD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3EFB DUP2 PUSH2 0x3EBD JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F41 JUMPI PUSH2 0x3F41 PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1B32 DUP2 PUSH2 0x3F47 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1B32 DUP2 PUSH2 0x3F67 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3FBA JUMPI PUSH2 0x3FBA PUSH2 0x3F09 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP3 POP DUP4 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3FD5 DUP3 PUSH2 0x3F47 JUMP JUMPDEST DUP2 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3FE7 PUSH1 0x40 DUP6 ADD PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3FF8 PUSH1 0x60 DUP6 ADD PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x4013 PUSH1 0xA0 DUP6 ADD PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x4024 PUSH1 0xC0 DUP6 ADD PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x4035 PUSH1 0xE0 DUP6 ADD PUSH2 0x3F79 JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x120 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4056 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4060 DUP5 DUP5 PUSH2 0x3F84 JUMP JUMPDEST SWAP2 POP PUSH2 0x100 DUP4 ADD CALLDATALOAD PUSH2 0x4071 DUP2 PUSH2 0x3F47 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x1E0 DUP2 SLT ISZERO PUSH2 0x4091 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x409B DUP6 DUP6 PUSH2 0x3F84 JUMP JUMPDEST SWAP3 POP PUSH1 0xE0 PUSH1 0xFF NOT DUP3 ADD SLT ISZERO PUSH2 0x40AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40B8 PUSH2 0x3F1F JUMP JUMPDEST PUSH2 0x100 DUP5 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x40CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MSTORE PUSH2 0x40DA PUSH2 0x120 DUP6 ADD PUSH2 0x3ED2 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x40EC PUSH2 0x140 DUP6 ADD PUSH2 0x3F79 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x40FE PUSH2 0x160 DUP6 ADD PUSH2 0x3F5C JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4110 PUSH2 0x180 DUP6 ADD PUSH2 0x3F79 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1A0 DUP5 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1C0 SWAP1 SWAP4 ADD CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE POP SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4145 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4161 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x416C DUP2 PUSH2 0x3EBD JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x417C DUP2 PUSH2 0x3EBD JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x419F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE3 DUP2 PUSH2 0x3F47 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4071 DUP2 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41E1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEE3 DUP2 PUSH2 0x3EBD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4216 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x422A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x4239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x424E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x42B5 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x42A3 DUP6 DUP4 MLOAD PUSH2 0x3E53 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4287 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x42D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x42E0 DUP2 PUSH2 0x3EBD JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4071 DUP2 PUSH2 0x3EBD JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4304 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x4325 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x17 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616C6C6572206E6F74206272696467652061646D696E000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 EQ ISZERO PUSH2 0x43A8 JUMPI PUSH2 0x43A8 PUSH2 0x4378 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x43C4 JUMPI PUSH2 0x43C4 PUSH2 0x4378 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x43DC JUMPI PUSH2 0x43DC PUSH2 0x4378 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x60 DUP6 ADD MLOAD AND PUSH1 0x60 DUP7 ADD MSTORE POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE DUP1 PUSH1 0xA0 DUP5 ADD MLOAD AND PUSH1 0xA0 DUP6 ADD MSTORE DUP1 PUSH1 0xC0 DUP5 ADD MLOAD AND PUSH1 0xC0 DUP6 ADD MSTORE POP POP PUSH4 0xFFFFFFFF PUSH1 0xE0 DUP3 ADD MLOAD AND PUSH1 0xE0 DUP4 ADD MSTORE POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x4475 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 PUSH2 0x44A2 SWAP1 DUP5 ADD DUP3 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x44BD PUSH1 0x60 DUP5 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x44D5 PUSH1 0x80 DUP5 ADD DUP3 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0xA0 DUP2 DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x200 DUP2 ADD PUSH2 0x44FA DUP3 DUP7 PUSH2 0x43E1 JUMP JUMPDEST PUSH2 0x4508 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4455 JUMP JUMPDEST DUP3 PUSH2 0x1E0 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4529 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4542 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEE3 DUP2 PUSH2 0x3F47 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x455F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEE3 DUP2 PUSH2 0x3F67 JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4589 JUMPI PUSH2 0x4589 PUSH2 0x4378 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x4589 JUMPI PUSH2 0x4589 PUSH2 0x4378 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT DUP1 ISZERO PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 SWAP1 SUB DUP6 SGT AND ISZERO PUSH2 0x45D6 JUMPI PUSH2 0x45D6 PUSH2 0x4378 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL DUP4 SWAP1 SUB DUP5 SLT DUP2 AND ISZERO PUSH2 0x45EF JUMPI PUSH2 0x45EF PUSH2 0x4378 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0xB57 DUP3 DUP5 PUSH2 0x4455 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x461D JUMPI PUSH2 0x461D PUSH2 0x4378 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4655 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x46A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x46B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x46F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x470A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x471C JUMPI PUSH2 0x471C PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4744 JUMPI PUSH2 0x4744 PUSH2 0x3F09 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x475D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3C41 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x4782 JUMPI PUSH2 0x4782 PUSH2 0x4378 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x479B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEE3 DUP2 PUSH2 0x3EBD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x47DA JUMPI PUSH2 0x47DA PUSH2 0x3F09 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x47F6 DUP3 DUP6 PUSH2 0x43E1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160 DUP2 ADD PUSH2 0x481E DUP3 DUP8 PUSH2 0x43E1 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLT DUP1 ISZERO PUSH1 0x1 PUSH1 0xFF SHL DUP6 ADD DUP5 SLT AND ISZERO PUSH2 0x4872 JUMPI PUSH2 0x4872 PUSH2 0x4378 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 ADD DUP4 SGT DUP2 AND ISZERO PUSH2 0x488D JUMPI PUSH2 0x488D PUSH2 0x4378 JUMP JUMPDEST POP POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP12 DUP4 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP13 AND PUSH1 0x20 DUP6 ADD MSTORE DUP2 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x48BA DUP3 DUP6 ADD DUP13 PUSH2 0x3E53 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH1 0xA0 DUP5 ADD SWAP8 SWAP1 SWAP8 MSTORE POP POP SWAP3 SWAP1 SWAP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP4 AND PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x100 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x200 DUP9 DUP4 MSTORE PUSH4 0xFFFFFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x4924 DUP2 DUP5 ADD DUP9 PUSH2 0x3E53 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x493D PUSH1 0x60 DUP4 ADD DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE POP PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE POP PUSH1 0x60 DUP6 ADD MLOAD DUP1 ISZERO ISZERO PUSH1 0xC0 DUP5 ADD MSTORE POP PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH2 0x100 DUP2 DUP2 DUP6 ADD MSTORE PUSH1 0xC0 DUP8 ADD MLOAD SWAP2 POP PUSH2 0x120 DUP3 DUP2 DUP7 ADD MSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP3 POP PUSH2 0x140 DUP4 DUP2 DUP8 ADD MSTORE DUP3 DUP10 ADD MLOAD PUSH2 0x160 DUP8 ADD MSTORE DUP2 DUP10 ADD MLOAD PUSH2 0x180 DUP8 ADD MSTORE DUP1 DUP10 ADD MLOAD PUSH2 0x1A0 DUP8 ADD MSTORE POP POP POP POP PUSH2 0x49E2 PUSH2 0x1C0 DUP4 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x3C41 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEE3 DUP2 PUSH2 0x3E92 JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x4A26 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3E27 JUMP JUMPDEST DUP5 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x4A3A DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x3E27 JUMP JUMPDEST DUP5 MLOAD SWAP2 ADD SWAP1 PUSH2 0x4A4D DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3E27 JUMP JUMPDEST ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0xFA SHL DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x4A73 DUP2 PUSH1 0x1 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL PUSH1 0x1 SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x2 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4A9D DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3E27 JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4AC2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3E27 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFBALANCE EQ DELEGATECALL 0xB2 0xBE LT JUMP EXTCODESIZE 0xAA 0x24 SLT PUSH21 0xEA1A6EFE24CDFB5845D64A1FDEFB484A5895776D64 PUSH20 0x6F6C634300080900330000000000000000000000 ",
                            "sourceMap": "1647:49553:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:98:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38390:190:14;;;;;;;;;;-1:-1:-1;38390:190:14;;;;;:::i;:::-;;:::i;:::-;;4174:166:0;;;;;;;;;;-1:-1:-1;4174:166:0;;;;;:::i;:::-;;:::i;:::-;;;1990:14:22;;1983:22;1965:41;;1953:2;1938:18;4174:166:0;1825:187:22;2868:32:14;;;;;;;;;;-1:-1:-1;2868:32:14;;;;;;;-1:-1:-1;;;;;2868:32:14;;;;;;-1:-1:-1;;;;;2286:31:22;;;2268:50;;2256:2;2241:18;2868:32:14;2124:200:22;21244:3013:14;;;;;;;;;;-1:-1:-1;21244:3013:14;;;;;:::i;:::-;;:::i;3546:20::-;;;;;;;;;;;;;;;;;;;4774:25:22;;;4762:2;4747:18;3546:20:14;4628:177:22;3097:38:14;;;;;;;;;;-1:-1:-1;3097:38:14;;;;-1:-1:-1;;;3097:38:14;;;;;;;;;5083:10:22;5071:23;;;5053:42;;5041:2;5026:18;3097:38:14;4909:192:22;3165:106:0;;;;;;;;;;-1:-1:-1;3252:12:0;;3165:106;;33953:136:14;;;;;;;;;;;;;:::i;39637:266::-;;;;;;;;;;-1:-1:-1;39637:266:14;;;;;:::i;:::-;;:::i;391:27:12:-;;;;;;;;;;-1:-1:-1;391:27:12;;;;-1:-1:-1;;;;;391:27:12;;;;;;-1:-1:-1;;;;;6587:32:22;;;6569:51;;6557:2;6542:18;391:27:12;6423:203:22;3947:55:14;;;;;;;;;;-1:-1:-1;3947:55:14;;;;-1:-1:-1;;;;;3947:55:14;;;1097:115:12;;;;;;;;;;-1:-1:-1;1097:115:12;;;;;:::i;:::-;;:::i;4807:414:0:-;;;;;;;;;;-1:-1:-1;4807:414:0;;;;;:::i;:::-;;:::i;37826:218:14:-;;;;;;;;;;-1:-1:-1;37826:218:14;;;;;:::i;:::-;;:::i;1457:276:12:-;;;;;;;;;;;;;:::i;3014:91:0:-;;;;;;;;;;-1:-1:-1;3014:91:0;;3096:2;7917:36:22;;7905:2;7890:18;3014:91:0;7775:184:22;5616:212:0;;;;;;;;;;-1:-1:-1;5616:212:0;;;;;:::i;:::-;;:::i;36723:245:14:-;;;;;;;;;;;;;:::i;28206:4941::-;;;;;;;;;;-1:-1:-1;28206:4941:14;;;;;:::i;:::-;;:::i;3387:34::-;;;;;;;;;;;;;;;;12297:815;;;;;;;;;;-1:-1:-1;12297:815:14;;;;;:::i;:::-;;:::i;10692:965::-;;;;;;:::i;:::-;;:::i;38875:124::-;;;;;;;;;;;;;:::i;34436:171::-;;;;;;;;;;-1:-1:-1;34436:171:14;;;;;:::i;:::-;;:::i;2209:30::-;;;;;;;;;;;;;;;;3329:125:0;;;;;;;;;;-1:-1:-1;3329:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;3429:18:0;3403:7;3429:18;;;:9;:18;;;;;;;3329:125;14198:4357:14;;;;;;;;;;-1:-1:-1;14198:4357:14;;;;;:::i;:::-;;:::i;4104:25::-;;;;;;;;;;;;;;;;2331:30;;;;;;;;;;;;;;;;37309:215;;;;;;;;;;-1:-1:-1;37309:215:14;;;;;:::i;:::-;;:::i;2288:102:0:-;;;;;;;;;;;;;:::i;3914:27:14:-;;;;;;;;;;-1:-1:-1;3914:27:14;;;;-1:-1:-1;;;;;3914:27:14;;;6315:371:0;;;;;;;;;;-1:-1:-1;6315:371:0;;;;;:::i;:::-;;:::i;3694:39:14:-;;;;;;;;;;-1:-1:-1;3694:39:14;;;;-1:-1:-1;;;;;3694:39:14;;;3657:172:0;;;;;;;;;;-1:-1:-1;3657:172:0;;;;;:::i;:::-;;:::i;528:710:11:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2101:29:14:-;;;;;;;;;;;;;;;;6499:48;;;;;;;;;;-1:-1:-1;6499:48:14;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;6499:48:14;;;35811:457;;;;;;;;;;;;;:::i;33645:117::-;;;;;;;;;;;;;:::i;2712:32::-;;;;;;;;;;-1:-1:-1;2712:32:14;;;;;;;;;;;25780:1739;;;;;;;;;;-1:-1:-1;25780:1739:14;;;;;:::i;:::-;;:::i;1903:30::-;;;;;;;;;;-1:-1:-1;1903:30:14;;;;;;;-1:-1:-1;;;;;1903:30:14;;;3062:29;;;;;;;;;;-1:-1:-1;3062:29:14;;;;-1:-1:-1;;;3062:29:14;;-1:-1:-1;;;;;3062:29:14;;;2569:22;;;;;;;;;;-1:-1:-1;2569:22:14;;;;;;;;19177:1351;;;;;;;;;;-1:-1:-1;19177:1351:14;;;;;:::i;:::-;;:::i;2012:28::-;;;;;;;;;;-1:-1:-1;2012:28:14;;;;-1:-1:-1;;;2012:28:14;;;;;;3887:149:0;;;;;;;;;;-1:-1:-1;3887:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;4002:18:0;;;3976:7;4002:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3887:149;6279:41:14;;;;;;;;;;-1:-1:-1;6279:41:14;;;;;:::i;:::-;;;;;;;;;;;;;;35055:279;;;;;;;;;;-1:-1:-1;35055:279:14;;;;;:::i;:::-;;:::i;:::-;;;;11771:25:22;;;11827:2;11812:18;;11805:34;;;;11744:18;35055:279:14;11597:248:22;2956:29:14;;;;;;;;;;-1:-1:-1;2956:29:14;;;;-1:-1:-1;;;2956:29:14;;;;;;33376:62;;;;;;;;;;;;;:::i;2077:98:0:-;2131:13;2163:5;2156:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:98;:::o;38390:190:14:-;7913:11;;-1:-1:-1;;;;;7913:11:14;7891:10;:34;7883:70;;;;-1:-1:-1;;;7883:70:14;;;;;;;:::i;:::-;;;;;;;;;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;38496:13:14::2;:30:::0;;;::::2;;;;-1:-1:-1::0;;38496:30:14;;::::2;;::::0;;38541:32:::2;::::0;::::2;::::0;::::2;::::0;38512:14;1990::22;1983:22;1965:41;;1953:2;1938:18;;1825:187;38541:32:14::2;;;;;;;;1384:20:10::1;:18;:20::i;:::-;38390:190:14::0;:::o;4174:166:0:-;4257:4;4273:39;665:10:5;4296:7:0;4305:6;4273:8;:39::i;:::-;-1:-1:-1;4329:4:0;4174:166;;;;;:::o;21244:3013:14:-;8025:13;;;;;;;8017:45;;;;-1:-1:-1;;;8017:45:14;;12789:2:22;8017:45:14;;;12771:21:22;12828:2;12808:18;;;12801:30;-1:-1:-1;;;12847:18:22;;;12840:49;12906:18;;8017:45:14;12587:343:22;8017:45:14;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;21680:7:14::2;21649:11;:27;;;-1:-1:-1::0;;;;;21649:38:14::2;;;:99;;;;;21741:7;21707:11;:30;;;-1:-1:-1::0;;;;;21707:41:14::2;;;21649:99;:145;;;;;21788:6;21768:16;-1:-1:-1::0;;;;;21768:26:14::2;;;21649:145;21628:204;;;::::0;-1:-1:-1;;;21628:204:14;;13137:2:22;21628:204:14::2;::::0;::::2;13119:21:22::0;13176:2;13156:18;;;13149:30;-1:-1:-1;;;13195:18:22;;;13188:42;13247:18;;21628:204:14::2;12935:336:22::0;21628:204:14::2;21906:19;21928:28;21944:11;21928:15;:28::i;:::-;22114:1;22083:19:::0;;;:6:::2;:19;::::0;;;;;21906:50;;-1:-1:-1;22083:33:14;22075:66:::2;;;::::0;-1:-1:-1;;;22075:66:14;;13478:2:22;22075:66:14::2;::::0;::::2;13460:21:22::0;13517:2;13497:18;;;13490:30;-1:-1:-1;;;13536:18:22;;;13529:50;13596:18;;22075:66:14::2;13276:344:22::0;22075:66:14::2;22252:23;22285:16;:14;:16::i;:::-;22252:50;;22313:20;22336:36;22353:11;:18;;;22336:16;:36::i;:::-;22313:59;;22777:26;22818:440;;;;;;;;22858:18;22818:440;;;;;;;;:::i;:::-;::::0;;22907:10:::2;22818:440;::::0;::::2;::::0;22944:14:::2;:16:::0;;22818:440;;;;;-1:-1:-1;;;22944:16:14;::::2;;;::::0;:14:::2;:16;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22818:440;;;;;;23088:16;-1:-1:-1::0;;;;;22818:440:14::2;;;;;23140:16;22818:440;;;;;;23188:12;22818:440;;;;23228:15;;22818:440;;::::0;22777:481:::2;;23290:28;23308:9;23290:17;:28::i;:::-;23268:19;::::0;;;:6:::2;:19;::::0;;;;:50;;;;23349:37:::2;23363:11:::0;23376:9;23349:13:::2;:37::i;:::-;23329:57;;23730:11;:18;;;23711:15;;23694:14;;:32;;;;:::i;:::-;:54;;23686:92;;;::::0;-1:-1:-1;;;23686:92:14;;14427:2:22;23686:92:14::2;::::0;::::2;14409:21:22::0;14466:2;14446:18;;;14439:30;-1:-1:-1;;;14485:18:22;;;14478:55;14550:18;;23686:92:14::2;14225:349:22::0;23686:92:14::2;23901:17;23936:15;;23921:12;:30;;;;:::i;:::-;23901:50;;23980:11;:18;;;23961:15;;:37;;;;;;;:::i;:::-;;;;;;;;24091:9;24082:5;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;24111:7:14::2;::::0;:62:::2;::::0;:7:::2;::::0;::::2;-1:-1:-1::0;;;;;24111:7:14::2;24136:10;24156:4;24163:9:::0;24111:24:::2;:62::i;:::-;24203:11;24188:62;24216:11;24229:9;24240;24188:62;;;;;;;;:::i;:::-;;;;;;;;21394:2863;;;;;;1384:20:10::1;:18;:20::i;:::-;21244:3013:14::0;;:::o;33953:136::-;34023:7;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;34049:33:14::1;34080:1;34049:30;:33::i;:::-;34042:40;;1384:20:10::0;:18;:20::i;:::-;33953:136:14;:::o;39637:266::-;39800:12;1603:19:10;:17;:19::i;:::-;39835:61:14::1;39858:37;39872:11;39885:9;39858:13;:37::i;:::-;39835:22;:61::i;:::-;39828:68:::0;39637:266;-1:-1:-1;;;39637:266:14:o;1097:115:12:-;899:3;875:12;-1:-1:-1;;;;;875:12:12;867:37;;;;;;1171:12:::1;::::0;1165:40:::1;::::0;-1:-1:-1;;;1165:40:12;;::::1;::::0;::::1;4774:25:22::0;;;-1:-1:-1;;;;;1171:12:12;;::::1;::::0;1165:34:::1;::::0;4747:18:22;;1165:40:12::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1097:115:::0;:::o;4807:414:0:-;4913:4;4929:36;4939:6;4947:9;4958:6;4929:9;:36::i;:::-;-1:-1:-1;;;;;5003:19:0;;4976:24;5003:19;;;:11;:19;;;;;;;;665:10:5;5003:33:0;;;;;;;;5054:26;;;;5046:79;;;;-1:-1:-1;;;5046:79:0;;16908:2:22;5046:79:0;;;16890:21:22;16947:2;16927:18;;;16920:30;16986:34;16966:18;;;16959:62;-1:-1:-1;;;17037:18:22;;;17030:38;17085:19;;5046:79:0;16706:404:22;5046:79:0;5135:57;5144:6;665:10:5;5166:25:0;5185:6;5166:16;:25;:::i;:::-;5135:8;:57::i;:::-;-1:-1:-1;5210:4:0;;4807:414;-1:-1:-1;;;;4807:414:0:o;37826:218:14:-;7913:11;;-1:-1:-1;;;;;7913:11:14;7891:10;:34;7883:70;;;;-1:-1:-1;;;7883:70:14;;;;;;;:::i;:::-;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;37947:18:14::2;:43:::0;;-1:-1:-1;;37947:43:14::2;::::0;-1:-1:-1;;;;;37947:43:14;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;;38005:32:::2;::::0;38018:18;::::2;;2268:50:22::0;;38005:32:14::2;::::0;2256:2:22;2241:18;38005:32:14::2;2124:200:22::0;1457:276:12;1512:7;1535:12;;-1:-1:-1;;;;;1535:12:12;:28;1531:196;;1592:12;;;;;;;;-1:-1:-1;;;;;1592:12:12;-1:-1:-1;;;;;1586:34:12;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1579:43;;1457:276;:::o;1531:196::-;-1:-1:-1;1660:15:12;;1457:276::o;5616:212:0:-;665:10:5;5704:4:0;5752:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5752:34:0;;;;;;;;;;5704:4;;5720:80;;5743:7;;5752:47;;5789:10;;5752:47;:::i;36723:245:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;36810:11:14::1;;;;;;;;;-1:-1:-1::0;;;;;36810:11:14::1;-1:-1:-1::0;;;;;36810:27:14::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36792:15;;:47;;;;;-1:-1:-1::0;;;;;36792:47:14::1;;;;;-1:-1:-1::0;;;;;36792:47:14::1;;;;;;36876:11;;;;;;;;;-1:-1:-1::0;;;;;36876:11:14::1;-1:-1:-1::0;;;;;36876:36:14::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36849:24;;:65;;;;;;;;;;;;;;;;;;36937:11;;;;;;;;;-1:-1:-1::0;;;;;36937:11:14::1;-1:-1:-1::0;;;;;36937:22:14::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36924:10;:37:::0;1384:20:10;:18;:20::i;:::-;36723:245:14:o;28206:4941::-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;28319:19:14::1;28341:28;28357:11;28341:15;:28::i;:::-;28319:50;;28379:46;28402:11;28415:9;28379:22;:46::i;:::-;28467:18;28443:20:::0;;:42:::1;::::0;::::1;;;;;;:::i;:::-;;28435:70;;;::::0;-1:-1:-1;;;28435:70:14;;18203:2:22;28435:70:14::1;::::0;::::1;18185:21:22::0;18242:2;18222:18;;;18215:30;-1:-1:-1;;;18261:18:22;;;18254:45;18316:18;;28435:70:14::1;18001:339:22::0;28435:70:14::1;28515:21;28568:24;;;;;;;;;;;28539:9;:26;;;:53;;;;:::i;:::-;28515:77;;28628:16;:14;:16::i;:::-;28610:14;:34;;;;28602:65;;;::::0;-1:-1:-1;;;28602:65:14;;18780:2:22;28602:65:14::1;::::0;::::1;18762:21:22::0;18819:2;18799:18;;;18792:30;-1:-1:-1;;;18838:18:22;;;18831:48;18896:18;;28602:65:14::1;18578:342:22::0;28602:65:14::1;28952:9;:21;;;-1:-1:-1::0;;;;;28938:35:14::1;:10;-1:-1:-1::0;;;;;28938:35:14::1;;:85;;;-1:-1:-1::0;28996:27:14::1;:14:::0;29013:10:::1;28996:27;:::i;:::-;28977:46;;:16;:14;:16::i;:::-;:46;28938:85;28917:148;;;::::0;-1:-1:-1;;;28917:148:14;;19127:2:22;28917:148:14::1;::::0;::::1;19109:21:22::0;19166:2;19146:18;;;19139:30;-1:-1:-1;;;19185:18:22;;;19178:46;19241:18;;28917:148:14::1;18925:340:22::0;28917:148:14::1;29219:395;::::0;;::::1;::::0;::::1;::::0;;;29188:436:::1;::::0;29219:395;29259:20:::1;29219:395;;;;29310:9;:21;;;-1:-1:-1::0;;;;;29219:395:14::1;;;;;29358:9;:17;;;29219:395;;;;;;29411:9;:26;;;-1:-1:-1::0;;;;;29219:395:14::1;;;;;29473:9;:26;;;29219:395;;;;;;29531:9;:22;;;29219:395;;;;29581:9;:18;;;29219:395;;::::0;29188:17:::1;:436::i;:::-;29166:19;::::0;;;:6:::1;:19;::::0;;;;:458;;;;30591:27:::1;::::0;::::1;::::0;30562:26:::1;::::0;::::1;::::0;30544:95:::1;::::0;30562:56:::1;::::0;::::1;:::i;:::-;30620:11;:18;;;30544:17;:95::i;:::-;30507:11;:18;;;:132;;;;:::i;:::-;30453:186;;30743:24;30770:44;30791:11;30804:9;30770:20;:44::i;:::-;30824:22;30849:31:::0;;;:13:::1;:31;::::0;;;;;31084:10:::1;::::0;30743:71;;-1:-1:-1;;;;;;30849:31:14::1;::::0;31084:10:::1;;:42:::0;::::1;;;-1:-1:-1::0;;;;;;31098:28:14;::::1;::::0;31084:42:::1;31080:566;;;31142:71;31156:11;:23;;;31181:31;31142:13;:71::i;:::-;31080:566;;;31474:172;-1:-1:-1::0;;;;;31512:28:14;::::1;:71;;31560:11;:23;;;31512:71;;;31543:14;31512:71;31474:7;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;31474:7:14::1;::::0;31601:31;31474:20:::1;:172::i;:::-;31937:25;31965:66;31983:11;:27;;;32012:11;:18;;;31965:17;:66::i;:::-;31937:94;;32041:17;32082:9;:22;;;32061:9;:18;;;:43;;;;:::i;:::-;32118:21;::::0;::::1;::::0;32041:63;;-1:-1:-1;;;;;;32118:35:14::1;32143:10;32118:35;32114:286;;;32188:21;::::0;::::1;::::0;32167:74:::1;::::0;32211:29:::1;32231:9:::0;32211:17;:29:::1;:::i;:::-;32167:7;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;32167:7:14::1;::::0;;:20:::1;:74::i;:::-;32114:286;;;32291:21;::::0;::::1;::::0;32270:7:::1;::::0;:54:::1;::::0;:7:::1;::::0;;::::1;-1:-1:-1::0;;;;;32270:7:14::1;::::0;32314:9;32270:20:::1;:54::i;:::-;32338:7;::::0;:51:::1;::::0;:7:::1;::::0;::::1;-1:-1:-1::0;;;;;32338:7:14::1;32359:10;32371:17:::0;32338:20:::1;:51::i;:::-;32410:25;32438:51;32472:17:::0;32438:31;:51:::1;:::i;:::-;32410:79;;32588:11;:18;;;32569:15;;:37;;;;;;;:::i;:::-;;;;;;;;32634:17;32616:14;;:35;;;;;;;:::i;:::-;;;;;;;;32688:17;32661:16;;:45;;;;;;;:::i;:::-;;;;;;;;32725:9;32716:5;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;32744:26:14::1;::::0;-1:-1:-1;32744:24:14::1;:26::i;:::-;32780:82;32796:65;32814:9;:26;;;32842:11;:18;;;32796:17;:65::i;:::-;32780:15;:82::i;:::-;32904:10;-1:-1:-1::0;;;;;32878:48:14::1;32891:11;32878:48;32916:9;32878:48;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;33109:31:14::1;::::0;;;-1:-1:-1;33109:13:14::1;:31;::::0;;;;33102:38;;-1:-1:-1;;;;;;33102:38:14::1;::::0;;-1:-1:-1;1384:20:10;;-1:-1:-1;1384:18:10;;-1:-1:-1;1384:20:10:i;12297:815:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;12481:7:14::1;12480:8;:22;;;-1:-1:-1::0;12492:10:14::1;::::0;::::1;;12480:22;12472:48;;;::::0;-1:-1:-1;;;12472:48:14;;20241:2:22;12472:48:14::1;::::0;::::1;20223:21:22::0;20280:2;20260:18;;;20253:30;-1:-1:-1;;;20299:18:22;;;20292:43;20352:18;;12472:48:14::1;20039:337:22::0;12472:48:14::1;12530:24;12600:4;12574:22;:20;:22::i;:::-;12558:38;::::0;:13;:38:::1;:::i;:::-;12557:47;;;;:::i;:::-;12530:74;;12748:16;12730:15;;:34;;;;:::i;:::-;12711:14;;:54;;12703:97;;;::::0;-1:-1:-1;;;12703:97:14;;21110:2:22;12703:97:14::1;::::0;::::1;21092:21:22::0;21149:2;21129:18;;;21122:30;21188:32;21168:18;;;21161:60;21238:18;;12703:97:14::1;20908:354:22::0;12703:97:14::1;12811:32;12817:10;12829:13;12811:5;:32::i;:::-;12871:16;12853:14;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12898:130:14;::::1;;;12911:52;12933:10;12946:16;12911:13;:52::i;:::-;12898:130;;;12978:7;::::0;:50:::1;::::0;:7:::1;::::0;::::1;-1:-1:-1::0;;;;;12978:7:14::1;12999:10;13011:16:::0;12978:20:::1;:50::i;:::-;13044:61;::::0;;11771:25:22;;;11827:2;11812:18;;11805:34;;;13094:10:14::1;::::0;13044:61:::1;::::0;11744:18:22;13044:61:14::1;;;;;;;12381:731;1384:20:10::0;:18;:20::i;10692:965:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;10947:10:14::1;::::0;::::1;;:40:::0;::::1;;;;10974:13;10961:9;:26;10947:40;10946:60;;;-1:-1:-1::0;10992:9:14::1;:14:::0;10946:60:::1;10938:100;;;::::0;-1:-1:-1;;;10938:100:14;;21469:2:22;10938:100:14::1;::::0;::::1;21451:21:22::0;21508:2;21488:18;;;21481:30;21547:29;21527:18;;;21520:57;21594:18;;10938:100:14::1;21267:351:22::0;10938:100:14::1;11239:22;11289;:20;:22::i;:::-;11265:20;:13:::0;11281:4:::1;11265:20;:::i;:::-;11264:47;;;;:::i;:::-;11239:72;;11321:33;11327:10;11339:14;11321:5;:33::i;:::-;11382:13;11364:14;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11410:9:14::1;:13:::0;;;;:27:::1;;-1:-1:-1::0;11427:10:14::1;::::0;::::1;;11410:27;11406:171;;;11457:7;;;;;;;;;-1:-1:-1::0;;;;;11457:7:14::1;-1:-1:-1::0;;;;;11439:35:14::1;;11483:9;11439:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;11406:171;;;11511:7;::::0;:66:::1;::::0;:7:::1;::::0;::::1;-1:-1:-1::0;;;;;11511:7:14::1;11536:10;11556:4;11563:13:::0;11511:24:::1;:66::i;:::-;11593:57;::::0;;11771:25:22;;;11827:2;11812:18;;11805:34;;;11639:10:14::1;::::0;11593:57:::1;::::0;11744:18:22;11593:57:14::1;;;;;;;10767:890;1384:20:10::0;:18;:20::i;38875:124:14:-;38945:7;1603:19:10;:17;:19::i;:::-;38971:21:14::1;:19;:21::i;34436:171::-:0;34529:7;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;34555:45:14::1;34586:13;34555:30;:45::i;:::-;34548:52;;1384:20:10::0;:18;:20::i;:::-;34436:171:14;;;:::o;14198:4357::-;8025:13;;;;;;;8017:45;;;;-1:-1:-1;;;8017:45:14;;12789:2:22;8017:45:14;;;12771:21:22;12828:2;12808:18;;;12801:30;-1:-1:-1;;;12847:18:22;;;12840:49;12906:18;;8017:45:14;12587:343:22;8017:45:14;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;14461:23:14::2;14494:16;:14;:16::i;:::-;14461:50;;14798:7;14767:11;:27;;;-1:-1:-1::0;;;;;14767:38:14::2;;;:99;;;;;14859:7;14825:11;:30;;;-1:-1:-1::0;;;;;14825:41:14::2;;;14767:99;:145;;;;;14906:6;14886:16;-1:-1:-1::0;;;;;14886:26:14::2;;;14767:145;14746:204;;;::::0;-1:-1:-1;;;14746:204:14;;13137:2:22;14746:204:14::2;::::0;::::2;13119:21:22::0;13176:2;13156:18;;;13149:30;-1:-1:-1;;;13195:18:22;;;13188:42;13247:18;;14746:204:14::2;12935:336:22::0;14746:204:14::2;15024:19;15046:28;15062:11;15046:15;:28::i;:::-;15232:1;15201:19:::0;;;:6:::2;:19;::::0;;;;;15024:50;;-1:-1:-1;15201:33:14;15193:66:::2;;;::::0;-1:-1:-1;;;15193:66:14;;13478:2:22;15193:66:14::2;::::0;::::2;13460:21:22::0;13517:2;13497:18;;;13490:30;-1:-1:-1;;;13536:18:22;;;13529:50;13596:18;;15193:66:14::2;13276:344:22::0;15193:66:14::2;15270:20;15293:36;15310:11;:18;;;15293:16;:36::i;:::-;15270:59;;15734:26;15775:440;;;;;;;;15815:18;15775:440;;;;;;;;:::i;:::-;::::0;;15864:10:::2;15775:440;::::0;::::2;::::0;15901:14:::2;:16:::0;;15775:440;;;;;-1:-1:-1;;;15901:16:14;::::2;;;::::0;:14:::2;:16;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15775:440;;;;;;16045:16;-1:-1:-1::0;;;;;15775:440:14::2;;;;;16097:16;15775:440;;;;;;16145:12;15775:440;;;;16185:15;;15775:440;;::::0;15734:481:::2;;16225:17;16245:37;16259:11;16272:9;16245:13;:37::i;:::-;16225:57;;16314:28;16332:9;16314:17;:28::i;:::-;16292:19;::::0;;;:6:::2;:19;::::0;;;;:50;;;;16380:44:::2;16299:11:::0;16414:9;16380:20:::2;:44::i;:::-;16601:1;16558:31:::0;;;:13:::2;:31;::::0;;;;;16353:71;;-1:-1:-1;;;;;;16558:31:14::2;:45:::0;16434:218:::2;;;::::0;-1:-1:-1;;;16434:218:14;;21825:2:22;16434:218:14::2;::::0;::::2;21807:21:22::0;21864:2;21844:18;;;21837:30;-1:-1:-1;;;21883:18:22;;;21876:53;21946:18;;16434:218:14::2;21623:347:22::0;16434:218:14::2;16996:11;:18;;;16977:15;;16960:14;;:32;;;;:::i;:::-;:54;;16952:92;;;::::0;-1:-1:-1;;;16952:92:14;;14427:2:22;16952:92:14::2;::::0;::::2;14409:21:22::0;14466:2;14446:18;;;14439:30;-1:-1:-1;;;14485:18:22;;;14478:55;14550:18;;16952:92:14::2;14225:349:22::0;16952:92:14::2;17167:17;17202:15;;17187:12;:30;;;;:::i;:::-;17167:50;;17419:17;17451:174;17545:11;:30;;;17515:11;:27;;;17486:9;:26;;;:56;;;;:::i;:::-;:89;;;;:::i;:::-;17593:11;:18;;;17451:17;:174::i;:::-;17419:206;;17751:23;17798:9;17777:11;:18;;;:30;;;;:::i;:::-;17751:56;;17827:9;17818:5;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17865:18:14::2;::::0;::::2;::::0;17846:15:::2;:37:::0;;:15:::2;::::0;:37:::2;::::0;17865:18;;17846:37:::2;:::i;:::-;::::0;;;-1:-1:-1;;17968:31:14::2;::::0;;;:13:::2;:31;::::0;;;;:44;;-1:-1:-1;;;;;;17968:44:14::2;18002:10;17968:44:::0;;::::2;::::0;;;18023:80:::2;::::0;18068:4:::2;18075:27;18093:9:::0;18075:15;:27:::2;:::i;:::-;18023:7;::::0;::::2;::::0;::::2;-1:-1:-1::0;;;;;18023:7:14::2;::::0;;:80;:24:::2;:80::i;:::-;18178:10;::::0;::::2;;18174:234;;;18204:55;18218:11;:23;;;18243:15;18204:13;:55::i;:::-;18174:234;;;18367:23;::::0;::::2;::::0;18346:7:::2;::::0;:62:::2;::::0;:7:::2;::::0;;::::2;-1:-1:-1::0;;;;;18346:7:14::2;::::0;18392:15;18346:20:::2;:62::i;:::-;18439:11;18424:62;18452:11;18465:9;18476;18424:62;;;;;;;;:::i;:::-;;;;;;;;18526:10;-1:-1:-1::0;;;;;18501:47:14::2;18513:11;18501:47;18538:9;18501:47;;;;;;:::i;:::-;;;;;;;;14351:4204;;;;;;;;;1384:20:10::1;:18;:20::i;37309:215:14:-:0;7913:11;;-1:-1:-1;;;;;7913:11:14;7891:10;:34;7883:70;;;;-1:-1:-1;;;7883:70:14;;;;;;;:::i;:::-;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;37408:11:14::2;:45:::0;;-1:-1:-1;;;;;;37408:45:14::2;-1:-1:-1::0;;;;;37408:45:14;::::2;::::0;;::::2;::::0;;;37468:49:::2;::::0;;37495:10:::2;22187:34:22::0;;22252:2;22237:18;;22230:43;;;;37468:49:14::2;::::0;22122:18:22;37468:49:14::2;21975:304:22::0;2288:102:0;2344:13;2376:7;2369:14;;;;;:::i;6315:371::-;665:10:5;6408:4:0;6451:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6451:34:0;;;;;;;;;;6503:35;;;;6495:85;;;;-1:-1:-1;;;6495:85:0;;22486:2:22;6495:85:0;;;22468:21:22;22525:2;22505:18;;;22498:30;22564:34;22544:18;;;22537:62;-1:-1:-1;;;22615:18:22;;;22608:35;22660:19;;6495:85:0;22284:401:22;6495:85:0;6590:67;665:10:5;6613:7:0;6622:34;6641:15;6622:16;:34;:::i;6590:67::-;-1:-1:-1;6675:4:0;;6315:371;-1:-1:-1;;;6315:371:0:o;3657:172::-;3743:4;3759:42;665:10:5;3783:9:0;3794:6;3759:9;:42::i;528:710:11:-;596:22;638:9;:14;630:54;;;;-1:-1:-1;;;630:54:11;;22892:2:22;630:54:11;;;22874:21:22;22931:2;22911:18;;;22904:30;22970:29;22950:18;;;22943:57;23017:18;;630:54:11;22690:351:22;630:54:11;716:4;-1:-1:-1;;;;;704:24:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:34;;743:9;738:494;758:15;;;738:494;;;795:12;;840:4;859;;864:1;859:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;832:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:73;;;;887:7;882:306;;1014:2;998:6;:13;:18;994:32;;;1018:8;;;994:32;1097:4;1089:6;1085:17;1075:27;;1155:6;1144:28;;;;;;;;;;;;:::i;:::-;1137:36;;-1:-1:-1;;;1137:36:11;;;;;;;;:::i;882:306::-;1215:6;1202:7;1210:1;1202:10;;;;;;;;:::i;:::-;;;;;;:19;;;;780:452;;775:3;;;;;:::i;:::-;;;;738:494;;;;528:710;;;;:::o;35811:457:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;35918:11:14::1;::::0;:20:::1;::::0;;-1:-1:-1;;;35918:20:14;;;;35877:22:::1;::::0;-1:-1:-1;;;;;35918:11:14::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:11;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36013:72;::::0;-1:-1:-1;;;36013:72:14;;-1:-1:-1;;;36013:72:14::1;::::0;::::1;4774:25:22::0;35877:62:14;;-1:-1:-1;;;;;;36013:31:14;::::1;::::0;::::1;::::0;4747:18:22;;36013:72:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35949:16;:146:::0;;-1:-1:-1;;;;;;35949:146:14::1;-1:-1:-1::0;;;;;35949:146:14;;::::1;;::::0;;36129:55:::1;::::0;-1:-1:-1;;;36129:55:14;;-1:-1:-1;;;36129:55:14::1;::::0;::::1;4774:25:22::0;36129:31:14;;::::1;::::0;::::1;::::0;4747:18:22;;36129:55:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36106:5;:79:::0;;-1:-1:-1;;;;;;36106:79:14::1;-1:-1:-1::0;;;;;36106:79:14;;::::1;::::0;;::::1;::::0;;;36243:7:::1;::::0;36213:39:::1;::::0;-1:-1:-1;;;36213:39:14;;36106:79:::1;36243:7:::0;;::::1;::::0;;::::1;36213:39;::::0;::::1;6569:51:22::0;36106:79:14;36213:21:::1;::::0;6542:18:22;;36213:39:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48:::0;36195:15:::1;:66:::0;-1:-1:-1;1384:20:10;:18;:20::i;33645:117:14:-;33707:7;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;33733:22:14::1;:20;:22::i;25780:1739::-:0;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;25894:19:14::1;25916:28;25932:11;25916:15;:28::i;:::-;25894:50;;25954:46;25977:11;25990:9;25954:22;:46::i;:::-;26010:24;26037:44;26058:11;26071:9;26037:20;:44::i;:::-;26010:71;;26263:24;;;;;;;;;;;26234:9;:26;;;:53;;;;:::i;:::-;26215:72;;:16;:14;:16::i;:::-;:72;:134;;;;-1:-1:-1::0;26331:18:14::1;26307:20:::0;;:42:::1;::::0;::::1;;;;;;:::i;:::-;;26215:134;:199;;;;-1:-1:-1::0;26412:1:14::1;26369:31:::0;;;:13:::1;:31;::::0;;;;;-1:-1:-1;;;;;26369:31:14::1;:45:::0;26215:199:::1;26091:372;;;::::0;-1:-1:-1;;;26091:372:14;;21825:2:22;26091:372:14::1;::::0;::::1;21807:21:22::0;21864:2;21844:18;;;21837:30;-1:-1:-1;;;21883:18:22;;;21876:53;21946:18;;26091:372:14::1;21623:347:22::0;26091:372:14::1;26473:31;::::0;;;:13:::1;:31;::::0;;;;:44;;-1:-1:-1;;;;;;26473:44:14::1;26507:10;26473:44;::::0;;26845:30:::1;::::0;::::1;::::0;26815:27:::1;::::0;::::1;::::0;26786:26:::1;::::0;::::1;::::0;26751:174:::1;::::0;26845:30;26786:56:::1;::::0;::::1;:::i;:::-;:89;;;;:::i;26751:174::-;26719:206;;27051:23;27098:9;27077:11;:18;;;:30;;;;:::i;:::-;27121:10;::::0;27051:56;;-1:-1:-1;27121:10:14::1;;27117:332;;;27147:7;::::0;:68:::1;::::0;:7:::1;::::0;::::1;-1:-1:-1::0;;;;;27147:7:14::1;27172:10;27192:4;27199:15:::0;27147:24:::1;:68::i;:::-;27229:55;27243:11;:23;;;27268:15;27229:13;:55::i;:::-;27117:332;;;27408:23;::::0;::::1;::::0;27371:7:::1;::::0;:78:::1;::::0;:7:::1;::::0;;::::1;-1:-1:-1::0;;;;;27371:7:14::1;::::0;27396:10:::1;::::0;27433:15;27371:24:::1;:78::i;:::-;27490:10;-1:-1:-1::0;;;;;27465:47:14::1;27477:11;27465:47;27502:9;27465:47;;;;;;:::i;:::-;;;;;;;;25884:1635;;;;1384:20:10::0;:18;:20::i;19177:1351:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;19355:16:14::1;:14;:16::i;:::-;19328:24;::::0;19299:26:::1;::::0;::::1;::::0;:53:::1;::::0;-1:-1:-1;;;19328:24:14;::::1;;;::::0;19299:53:::1;:::i;:::-;:72;;;19291:98;;;::::0;-1:-1:-1;;;19291:98:14;;25915:2:22;19291:98:14::1;::::0;::::1;25897:21:22::0;25954:2;25934:18;;;25927:30;-1:-1:-1;;;25973:18:22;;;25966:43;26026:18;;19291:98:14::1;25713:337:22::0;19291:98:14::1;19431:18;19407:20:::0;;:42:::1;::::0;::::1;;;;;;:::i;:::-;;19399:69;;;::::0;-1:-1:-1;;;19399:69:14;;26257:2:22;19399:69:14::1;::::0;::::1;26239:21:22::0;26296:2;26276:18;;;26269:30;-1:-1:-1;;;26315:18:22;;;26308:44;26369:18;;19399:69:14::1;26055:338:22::0;19399:69:14::1;19514:19;19536:28;19552:11;19536:15;:28::i;:::-;19514:50;;19574:46;19597:11;19610:9;19574:22;:46::i;:::-;19685:17;19705:37;19719:11;19732:9;19705:13;:37::i;:::-;19685:57;;19864:12;19891:230;19931:9;:21;;;19970:10;19998:9;:22;;;20038:9;:18;;;20074:33;20097:9;20074:22;:33::i;:::-;19891:22;:230::i;:::-;19864:257;;20232:9;:22;;;20211:9;:18;;;:43;;;;:::i;:::-;20202:5;;:52;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20283:18:14::1;::::0;::::1;::::0;20264:15:::1;:37:::0;;:15:::1;::::0;:37:::1;::::0;20283:18;;20264:37:::1;:::i;:::-;::::0;;;-1:-1:-1;;20318:19:14::1;::::0;;;:6:::1;:19;::::0;;;;20311:26;20347:174;::::1;;;20422:10;20392:28;20410:9:::0;20392:17:::1;:28::i;:::-;20365:68;::::0;20379:11;;20365:68:::1;::::0;;;::::1;20347:174;;;20510:10;20480:28;20498:9:::0;20480:17:::1;:28::i;:::-;20453:68;::::0;20467:11;;20453:68:::1;::::0;;;::::1;20347:174;19281:1247;;;1384:20:10::0;:18;:20::i;35055:279:14:-;35166:26;35194:28;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;35246:33:14::1;35277:1;35246:30;:33::i;:::-;35281:45;35312:13;35281:30;:45::i;:::-;35238:89;;;;1384:20:10::0;:18;:20::i;:::-;35055:279:14;;;:::o;33376:62::-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;33424:7:14::1;:5;:7::i;:::-;1384:20:10::0;:18;:20::i;2143:186::-;2275:11;;;;2267:55;;;;-1:-1:-1;;;2267:55:10;;26600:2:22;2267:55:10;;;26582:21:22;26639:2;26619:18;;;26612:30;26678:33;26658:18;;;26651:61;26729:18;;2267:55:10;26398:355:22;2335:136:10;2445:11;:19;;-1:-1:-1;;2445:19:10;;;2335:136::o;2477:206::-;2658:11;:18;;-1:-1:-1;;2658:18:10;2672:4;2658:18;;;2477:206::o;9579:340:0:-;-1:-1:-1;;;;;9680:19:0;;9672:68;;;;-1:-1:-1;;;9672:68:0;;26960:2:22;9672:68:0;;;26942:21:22;26999:2;26979:18;;;26972:30;27038:34;27018:18;;;27011:62;-1:-1:-1;;;27089:18:22;;;27082:34;27133:19;;9672:68:0;26758:400:22;9672:68:0;-1:-1:-1;;;;;9758:21:0;;9750:68;;;;-1:-1:-1;;;9750:68:0;;27365:2:22;9750:68:0;;;27347:21:22;27404:2;27384:18;;;27377:30;27443:34;27423:18;;;27416:62;-1:-1:-1;;;27494:18:22;;;27487:32;27536:19;;9750:68:0;27163:398:22;9750:68:0;-1:-1:-1;;;;;9829:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9880:32;;4774:25:22;;;9880:32:0;;4747:18:22;9880:32:0;;;;;;;;9579:340;;;:::o;46920:164:14:-;47067:7;;47035:41;;46999:7;;47035:41;;47046:11;;47067:7;;;-1:-1:-1;;;;;47067:7:14;;47035:41;;;:::i;:::-;;;;;;;;;;;;;47025:52;;;;;;47018:59;;46920:164;;;:::o;46775:139::-;46883:15;;46839:7;;46865:42;;-1:-1:-1;;;46883:15:14;;-1:-1:-1;;;;;46883:15:14;46900:6;46865:17;:42::i;43958:142::-;44035:7;44082:9;44071:21;;;;;;;;:::i;43626:237::-;43731:7;43778:11;43791:9;:17;;;43810:9;:26;;;43846:7;;;;;;;;;-1:-1:-1;;;;;43846:7:14;43767:88;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;43757:99;;;;;;43750:106;;43626:237;;;;:::o;815:203:3:-;942:68;;-1:-1:-1;;;;;28730:15:22;;;942:68:3;;;28712:34:22;28782:15;;28762:18;;;28755:43;28814:18;;;28807:34;;;915:96:3;;935:5;;-1:-1:-1;;;965:27:3;28647:18:22;;942:68:3;;;;-1:-1:-1;;942:68:3;;;;;;;;;;;;;;-1:-1:-1;;;;;942:68:3;-1:-1:-1;;;;;;942:68:3;;;;;;;;;;915:19;:96::i;:::-;815:203;;;;:::o;40043:1313:14:-;40124:7;40143;:5;:7::i;:::-;40875:31;40928:1;40909:16;;:20;:52;;40960:1;40909:52;;;40940:16;;40909:52;40875:86;;40971:17;41025:23;41007:15;;40991:13;:31;;;;:::i;:::-;:57;;;;:::i;:::-;40971:77;;41058:19;41097:23;41080:14;;:40;;;;:::i;:::-;41058:62;-1:-1:-1;41209:16:14;41205:33;;-1:-1:-1;41234:4:14;;40043:1313;-1:-1:-1;;;;40043:1313:14:o;41205:33::-;41338:11;41318:16;:9;41330:4;41318:16;:::i;:::-;41317:32;;;;:::i;:::-;41310:39;40043:1313;-1:-1:-1;;;;;40043:1313:14:o;43338:174::-;43411:12;43442:63;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;43442:63:14;;;43495:9;43442:35;:63::i;7160:592:0:-;-1:-1:-1;;;;;7265:20:0;;7257:70;;;;-1:-1:-1;;;7257:70:0;;29054:2:22;7257:70:0;;;29036:21:22;29093:2;29073:18;;;29066:30;29132:34;29112:18;;;29105:62;-1:-1:-1;;;29183:18:22;;;29176:35;29228:19;;7257:70:0;28852:401:22;7257:70:0;-1:-1:-1;;;;;7345:23:0;;7337:71;;;;-1:-1:-1;;;7337:71:0;;29460:2:22;7337:71:0;;;29442:21:22;29499:2;29479:18;;;29472:30;29538:34;29518:18;;;29511:62;-1:-1:-1;;;29589:18:22;;;29582:33;29632:19;;7337:71:0;29258:399:22;7337:71:0;-1:-1:-1;;;;;7501:17:0;;7477:21;7501:17;;;:9;:17;;;;;;7536:23;;;;7528:74;;;;-1:-1:-1;;;7528:74:0;;29864:2:22;7528:74:0;;;29846:21:22;29903:2;29883:18;;;29876:30;29942:34;29922:18;;;29915:62;-1:-1:-1;;;29993:18:22;;;29986:36;30039:19;;7528:74:0;29662:402:22;7528:74:0;7632:22;7648:6;7632:13;:22;:::i;:::-;-1:-1:-1;;;;;7612:17:0;;;;;;;:9;:17;;;;;;:42;;;;7664:20;;;;;;;;:30;;7688:6;;7612:17;7664:30;;7688:6;;7664:30;:::i;:::-;;;;;;;;7727:9;-1:-1:-1;;;;;7710:35:0;7719:6;-1:-1:-1;;;;;7710:35:0;;7738:6;7710:35;;;;4774:25:22;;4762:2;4747:18;;4628:177;7710:35:0;;;;;;;;7247:505;7160:592;;;:::o;44198:273:14:-;44346:28;44364:9;44346:17;:28::i;:::-;44323:19;;;;:6;:19;;;;;;:51;44302:162;;;;;-1:-1:-1;;;44302:162:14;;30271:2:22;44302:162:14;;;30253:21:22;30290:18;;;30283:30;;;;30349:34;30329:18;;;30322:62;30420:34;30400:18;;;30393:62;30472:19;;44302:162:14;30069:428:22;46630:139:14;46711:7;46758:4;46738:16;46748:6;-1:-1:-1;;;;;46738:16:14;;;:::i;:::-;46737:25;;;;:::i;44593:533::-;44694:7;45078:11;45091:9;:26;;;45067:51;;;;;;;;30674:25:22;;;-1:-1:-1;;;;;30735:31:22;30730:2;30715:18;;30708:59;30662:2;30647:18;;30502:271;50803:279:14;-1:-1:-1;;;;;50885:22:14;;1078:20:4;1116:8;50881:195:14;;50925:7;;:32;;:7;;;-1:-1:-1;;;;;50925:7:14;50946:2;50950:6;50925:20;:32::i;50881:195::-;51006:7;;50988:44;;-1:-1:-1;;;50988:44:14;;;;;4774:25:22;;;51006:7:14;;;;-1:-1:-1;;;;;51006:7:14;;50988:36;;4747:18:22;;50988:44:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;51046:19:14;;-1:-1:-1;;;;;51046:11:14;;;-1:-1:-1;51046:19:14;;;;;-1:-1:-1;51058:6:14;;51046:19;;;;51058:6;51046:11;:19;;;;;;;;;;;;;;;;;;;;;50803:279;;:::o;634:175:3:-;743:58;;-1:-1:-1;;;;;30970:32:22;;743:58:3;;;30952:51:22;31019:18;;;31012:34;;;716:86:3;;736:5;;-1:-1:-1;;;766:23:3;30925:18:22;;743:58:3;30778:274:22;45790:430:14;45941:34;45978:21;:19;:21::i;:::-;45941:58;;46134:26;46112:19;;:48;;;;:::i;:::-;46090:19;:70;46196:16;:14;:16::i;:::-;46171:15;;:42;;;;;;;;;;;;;;;;;;45835:385;45790:430::o;46284:340::-;46549:15;46526:19;;:38;;;;;;;:::i;:::-;;;;;;;;46601:15;46574:16;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;;46284:340:14:o;42165:1071::-;42215:7;42238:13;3252:12:0;;;3165:106;42238:13:14;42234:35;;-1:-1:-1;42265:4:14;;42165:1071::o;42234:35::-;42419:26;:24;:26::i;:::-;42531:7;:5;:7::i;:::-;43079:16;43149:19;;43123:16;;43105:14;;43098:41;;;;:::i;:::-;:71;;;;:::i;:::-;43079:90;;43216:13;3252:12:0;;;3165:106;43216:13:14;43187:25;43195:9;43208:4;43187:25;:::i;:::-;43186:43;;;;:::i;:::-;43179:50;;;42165:1071;:::o;8673:483:0:-;-1:-1:-1;;;;;8756:21:0;;8748:67;;;;-1:-1:-1;;;8748:67:0;;31531:2:22;8748:67:0;;;31513:21:22;31570:2;31550:18;;;31543:30;31609:34;31589:18;;;31582:62;-1:-1:-1;;;31660:18:22;;;31653:31;31701:19;;8748:67:0;31329:397:22;8748:67:0;-1:-1:-1;;;;;8911:18:0;;8886:22;8911:18;;;:9;:18;;;;;;8947:24;;;;8939:71;;;;-1:-1:-1;;;8939:71:0;;31933:2:22;8939:71:0;;;31915:21:22;31972:2;31952:18;;;31945:30;32011:34;31991:18;;;31984:62;-1:-1:-1;;;32062:18:22;;;32055:32;32104:19;;8939:71:0;31731:398:22;8939:71:0;9041:23;9058:6;9041:14;:23;:::i;:::-;-1:-1:-1;;;;;9020:18:0;;;;;;:9;:18;;;;;:44;;;;9074:12;:22;;9090:6;;9020:18;9074:22;;9090:6;;9074:22;:::i;:::-;;;;-1:-1:-1;;9112:37:0;;4774:25:22;;;9138:1:0;;-1:-1:-1;;;;;9112:37:0;;;;;4762:2:22;4747:18;9112:37:0;4628:177:22;8023:330:0;-1:-1:-1;;;;;8106:21:0;;8098:65;;;;-1:-1:-1;;;8098:65:0;;32336:2:22;8098:65:0;;;32318:21:22;32375:2;32355:18;;;32348:30;32414:33;32394:18;;;32387:61;32465:18;;8098:65:0;32134:355:22;8098:65:0;8250:6;8234:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8266:18:0;;;;;;:9;:18;;;;;:28;;8288:6;;8266:18;:28;;8288:6;;8266:28;:::i;:::-;;;;-1:-1:-1;;8309:37:0;;4774:25:22;;;-1:-1:-1;;;;;8309:37:0;;;8326:1;;8309:37;;4762:2:22;4747:18;8309:37:0;;;;;;;8023:330;;:::o;45132:540:14:-;45539:15;;45186:7;;;;45560:4;;-1:-1:-1;;;45539:15:14;;;;45520:16;:14;:16::i;:::-;:34;;;;:::i;:::-;45498:18;;45476:19;;:40;;45498:18;;;-1:-1:-1;;;;;45498:18:14;;45476:40;:::i;:::-;:79;;;;:::i;:::-;45475:90;;;;:::i;:::-;45434:131;;45603:19;;45582:18;:40;:83;;45646:19;;45582:83;;47326:3354;47531:4;;47567:23;47578:12;47567:8;:23;:::i;:::-;47628:16;;47600:7;;47547:43;;-1:-1:-1;47600:57:14;;47628:16;47600:7;;-1:-1:-1;;;;;47600:7:14;;;;47628:16;47547:43;47600:19;:57::i;:::-;47683:16;;47743:10;;-1:-1:-1;;;;;47683:16:14;;;;:42;;47778:16;:14;:16::i;:::-;47813:19;47857:7;;;;;;;;;-1:-1:-1;;;;;47857:7:14;48065:1;48166:12;48273:24;;;;;;;;;;;48315:8;48438:4;47683:774;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47683:774:14;;;;;;;;-1:-1:-1;;47683:774:14;;;;;;;;;;;;:::i;:::-;;;47667:1790;;49222:7;;:41;;:7;;;-1:-1:-1;;;;;49222:7:14;49243:8;49253:9;49222:20;:41::i;:::-;49305:16;;49277:7;;:49;;-1:-1:-1;;;;;49305:16:14;49277:7;;;;;;49305:16;;49277:19;:49::i;:::-;49441:5;49434:12;;;;;47667:1790;48524:9;48512;:21;48508:353;;;48646:14;48663:21;48675:9;48663;:21;:::i;:::-;48702:7;;48646:38;;-1:-1:-1;48702:38:14;;:7;;;-1:-1:-1;;;;;48702:7:14;48723:8;48646:38;48702:20;:38::i;:::-;48786:16;;48758:7;;:49;;-1:-1:-1;;;;;48786:16:14;48758:7;;;;;;48786:16;;48758:19;:49::i;:::-;48837:9;48825:21;;48535:326;48508:353;-1:-1:-1;49536:542:14;;;;;;;;-1:-1:-1;;;;;49536:542:14;;;;;-1:-1:-1;49536:542:14;;;;;;49685:7;;;;;;;;49536:542;;;;;;;;;;;;;49765:4;49536:542;;;;;;;;;;49857:24;;49536:542;;;;-1:-1:-1;;;49857:24:14;;;;49838:16;:14;:16::i;:::-;:43;;;;:::i;:::-;49536:542;;49907:1;49536:542;;;;;;49936:24;49948:12;49936:9;:24;:::i;:::-;49536:542;;;;;;;;50038:24;;-1:-1:-1;;;50038:24:14;;;;;;49536:542;;;;;;;;50177:7;;49467:611;;-1:-1:-1;50177:62:14;;50038:24;50177:7;;-1:-1:-1;;;;;50177:7:14;;50202:10;;50222:4;;50229:9;;50177:24;:62;:::i;:::-;50277:16;;50249:7;;:57;;-1:-1:-1;;;;;50277:16:14;50249:7;;;;;;50277:16;50296:9;50249:19;:57::i;:::-;50366:16;;50412:10;;-1:-1:-1;;;;;50366:16:14;;;;:32;;50443:16;:14;:16::i;:::-;50474:19;50507:7;50528:8;50558:4;50366:207;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;50669:4:14;;47326:3354;-1:-1:-1;;;;;;;;47326:3354:14:o;41362:797::-;41664:5;;41629:7;;:32;;-1:-1:-1;;;41629:32:14;;41655:4;41629:32;;;6569:51:22;41604:22:14;;41664:5;41629:7;;;-1:-1:-1;;;;;41629:7:14;;:17;;6542:18:22;;41629:32:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;;:::i;:::-;41604:65;;41700:14;;41683;:31;41679:474;;;42082:14;;42065:31;;:14;:31;:::i;:::-;42038:16;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;42111:14:14;:31;41362:797::o;3022:751:3:-;3441:23;3467:69;3495:4;3467:69;;;;;;;;;;;;;;;;;3475:5;-1:-1:-1;;;;;3467:27:3;;;:69;;;;;:::i;:::-;3550:17;;3441:95;;-1:-1:-1;3550:21:3;3546:221;;3690:10;3679:30;;;;;;;;;;;;:::i;:::-;3671:85;;;;-1:-1:-1;;;3671:85:3;;35488:2:22;3671:85:3;;;35470:21:22;35527:2;35507:18;;;35500:30;35566:34;35546:18;;;35539:62;-1:-1:-1;;;35617:18:22;;;35610:40;35667:19;;3671:85:3;35286:406:22;4121:330:8;4273:12;4297:19;4319:42;4335:20;4357:3;4319:15;:42::i;:::-;4297:64;;4395:20;4417:6;4425:18;4437:5;4425:11;:18::i;:::-;4378:66;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4371:73;;;4121:330;;;;;:::o;1278:613:3:-;1643:10;;;1642:62;;-1:-1:-1;1659:39:3;;-1:-1:-1;;;1659:39:3;;1683:4;1659:39;;;22187:34:22;-1:-1:-1;;;;;22257:15:22;;;22237:18;;;22230:43;1659:15:3;;;;;22122:18:22;;1659:39:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1642:62;1634:150;;;;-1:-1:-1;;;1634:150:3;;36562:2:22;1634:150:3;;;36544:21:22;36601:2;36581:18;;;36574:30;36640:34;36620:18;;;36613:62;-1:-1:-1;;;36691:18:22;;;36684:52;36753:19;;1634:150:3;36360:418:22;1634:150:3;1821:62;;-1:-1:-1;;;;;30970:32:22;;1821:62:3;;;30952:51:22;31019:18;;;31012:34;;;1794:90:3;;1814:5;;-1:-1:-1;;;1844:22:3;30925:18:22;;1821:62:3;30778:274:22;3573:193:4;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;:::-;3700:59;3573:193;-1:-1:-1;;;;3573:193:4:o;6928:295:8:-;7057:27;;7029:12;;7057:31;7053:164;;7133:3;7111:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;7104:38;;;;7053:164;7197:3;7180:26;;;;;;;;:::i;2586:182::-;2647:12;2695:35;2726:3;2715:7;:14;;2695:19;:35::i;:::-;2732:28;2752:7;2732:19;:28::i;:::-;2678:83;;;;;;37957:19:22;;;;37992:12;;37985:28;38029:12;;2678:83:8;;;;;;;;;;;;2671:90;;2586:182;;;:::o;4600:523:4:-;4727:12;4784:5;4759:21;:30;;4751:81;;;;-1:-1:-1;;;4751:81:4;;38254:2:22;4751:81:4;;;38236:21:22;38293:2;38273:18;;;38266:30;38332:34;38312:18;;;38305:62;-1:-1:-1;;;38383:18:22;;;38376:36;38429:19;;4751:81:4;38052:402:22;4751:81:4;1078:20;;4842:60;;;;-1:-1:-1;;;4842:60:4;;38661:2:22;4842:60:4;;;38643:21:22;38700:2;38680:18;;;38673:30;38739:31;38719:18;;;38712:59;38788:18;;4842:60:4;38459:353:22;4842:60:4;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:4;5034:5;5042:4;5014:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:4:o;897:1306:8:-;965:7;1008:9;1028:7;1020:16;;1008:28;;1088:1;1092:66;1088:70;1084:74;;1182:1;1186:5;1182:9;1177:1;:15;1196:66;1176:86;1172:90;;1286:1;1290:5;1286:9;1281:1;:15;1300:66;1280:86;1276:90;;1390:1;1394:5;1390:9;1385:1;:15;1404:66;1384:86;1380:90;;1494:1;1498:4;1494:8;1489:1;:14;1507:66;1488:85;1484:89;;1597:1;1601:4;1597:8;1592:1;:14;1610:66;1591:85;1587:89;;1717:9;1804:1;1730;1734:66;1730:70;1729:76;;;;;:::i;:::-;;1906:1;1836:66;1832:70;;1831:76;2008:1;1938:66;1934:70;;1933:76;2037:5;2032:11;2047:4;2031:20;2027:24;;;2054:66;2027:93;;;-1:-1:-1;;;897:1306:8:o;7083:725:4:-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:4;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7363:429;7764:12;7757:20;;-1:-1:-1;;;7757:20:4;;;;;;;;:::i;14:258:22:-;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;-1:-1:-1;;262:1:22;244:16;;237:27;14:258::o;277:::-;319:3;357:5;351:12;384:6;379:3;372:19;400:63;456:6;449:4;444:3;440:14;433:4;426:5;422:16;400:63;:::i;:::-;517:2;496:15;-1:-1:-1;;492:29:22;483:39;;;;524:4;479:50;;277:258;-1:-1:-1;;277:258:22:o;540:220::-;689:2;678:9;671:21;652:4;709:45;750:2;739:9;735:18;727:6;709:45;:::i;765:118::-;851:5;844:13;837:21;830:5;827:32;817:60;;873:1;870;863:12;888:241;944:6;997:2;985:9;976:7;972:23;968:32;965:52;;;1013:1;1010;1003:12;965:52;1052:9;1039:23;1071:28;1093:5;1071:28;:::i;1134:131::-;-1:-1:-1;;;;;1209:31:22;;1199:42;;1189:70;;1255:1;1252;1245:12;1270:134;1338:20;;1367:31;1338:20;1367:31;:::i;1409:315::-;1477:6;1485;1538:2;1526:9;1517:7;1513:23;1509:32;1506:52;;;1554:1;1551;1544:12;1506:52;1593:9;1580:23;1612:31;1637:5;1612:31;:::i;:::-;1662:5;1714:2;1699:18;;;;1686:32;;-1:-1:-1;;;1409:315:22:o;2329:127::-;2390:10;2385:3;2381:20;2378:1;2371:31;2421:4;2418:1;2411:15;2445:4;2442:1;2435:15;2461:248;2528:2;2522:9;2570:4;2558:17;;-1:-1:-1;;;;;2590:34:22;;2626:22;;;2587:62;2584:88;;;2652:18;;:::i;:::-;2688:2;2681:22;2461:248;:::o;2714:129::-;-1:-1:-1;;;;;2792:5:22;2788:30;2781:5;2778:41;2768:69;;2833:1;2830;2823:12;2848:132;2915:20;;2944:30;2915:20;2944:30;:::i;2985:121::-;3070:10;3063:5;3059:22;3052:5;3049:33;3039:61;;3096:1;3093;3086:12;3111:132;3178:20;;3207:30;3178:20;3207:30;:::i;3248:1000::-;3306:5;3336:6;3379:2;3367:9;3362:3;3358:19;3354:28;3351:48;;;3395:1;3392;3385:12;3351:48;3428:2;3422:9;3458:15;;;;-1:-1:-1;;;;;3488:34:22;;3524:22;;;3485:62;3482:88;;;3550:18;;:::i;:::-;3590:10;3586:2;3579:22;3619:6;3610:15;;3662:9;3649:23;3641:6;3634:39;3725:2;3714:9;3710:18;3697:32;3682:47;;3738:32;3762:7;3738:32;:::i;:::-;3803:7;3798:2;3790:6;3786:15;3779:32;3844:38;3878:2;3867:9;3863:18;3844:38;:::i;:::-;3839:2;3831:6;3827:15;3820:63;3916:38;3950:2;3939:9;3935:18;3916:38;:::i;:::-;3911:2;3903:6;3899:15;3892:63;4017:3;4006:9;4002:19;3989:33;3983:3;3975:6;3971:16;3964:59;4057:38;4090:3;4079:9;4075:19;4057:38;:::i;:::-;4051:3;4043:6;4039:16;4032:64;4130:38;4163:3;4152:9;4148:19;4130:38;:::i;:::-;4124:3;4116:6;4112:16;4105:64;4203:38;4236:3;4225:9;4221:19;4203:38;:::i;:::-;4197:3;4189:6;4185:16;4178:64;;;3248:1000;;;;:::o;4253:370::-;4349:6;4357;4410:3;4398:9;4389:7;4385:23;4381:33;4378:53;;;4427:1;4424;4417:12;4378:53;4450:49;4491:7;4480:9;4450:49;:::i;:::-;4440:59;;4549:3;4538:9;4534:19;4521:33;4563:30;4587:5;4563:30;:::i;:::-;4612:5;4602:15;;;4253:370;;;;;:::o;5106:980::-;5230:6;5238;5282:9;5273:7;5269:23;5312:3;5308:2;5304:12;5301:32;;;5329:1;5326;5319:12;5301:32;5352:49;5393:7;5382:9;5352:49;:::i;:::-;5342:59;-1:-1:-1;5436:4:22;-1:-1:-1;;5417:17:22;;5413:28;5410:48;;;5454:1;5451;5444:12;5410:48;;5480:17;;:::i;:::-;5549:3;5538:9;5534:19;5521:33;5585:1;5576:7;5573:14;5563:42;;5601:1;5598;5591:12;5563:42;5614:22;;5668:39;5702:3;5687:19;;5668:39;:::i;:::-;5663:2;5656:5;5652:14;5645:63;5740:38;5773:3;5762:9;5758:19;5740:38;:::i;:::-;5735:2;5728:5;5724:14;5717:62;5811:38;5844:3;5833:9;5829:19;5811:38;:::i;:::-;5806:2;5799:5;5795:14;5788:62;5883:38;5916:3;5905:9;5901:19;5883:38;:::i;:::-;5877:3;5866:15;;5859:63;5983:3;5968:19;;5955:33;5949:3;5938:15;;5931:58;6050:3;6035:19;;;6022:33;6016:3;6005:15;;5998:58;-1:-1:-1;5106:980:22;5870:5;;-1:-1:-1;5106:980:22:o;6879:180::-;6938:6;6991:2;6979:9;6970:7;6966:23;6962:32;6959:52;;;7007:1;7004;6997:12;6959:52;-1:-1:-1;7030:23:22;;6879:180;-1:-1:-1;6879:180:22:o;7064:456::-;7141:6;7149;7157;7210:2;7198:9;7189:7;7185:23;7181:32;7178:52;;;7226:1;7223;7216:12;7178:52;7265:9;7252:23;7284:31;7309:5;7284:31;:::i;:::-;7334:5;-1:-1:-1;7391:2:22;7376:18;;7363:32;7404:33;7363:32;7404:33;:::i;:::-;7064:456;;7456:7;;-1:-1:-1;;;7510:2:22;7495:18;;;;7482:32;;7064:456::o;7525:245::-;7583:6;7636:2;7624:9;7615:7;7611:23;7607:32;7604:52;;;7652:1;7649;7642:12;7604:52;7691:9;7678:23;7710:30;7734:5;7710:30;:::i;7964:309::-;8029:6;8037;8090:2;8078:9;8069:7;8065:23;8061:32;8058:52;;;8106:1;8103;8096:12;8058:52;8142:9;8129:23;8119:33;;8202:2;8191:9;8187:18;8174:32;8215:28;8237:5;8215:28;:::i;8458:247::-;8517:6;8570:2;8558:9;8549:7;8545:23;8541:32;8538:52;;;8586:1;8583;8576:12;8538:52;8625:9;8612:23;8644:31;8669:5;8644:31;:::i;9360:626::-;9457:6;9465;9518:2;9506:9;9497:7;9493:23;9489:32;9486:52;;;9534:1;9531;9524:12;9486:52;9574:9;9561:23;-1:-1:-1;;;;;9644:2:22;9636:6;9633:14;9630:34;;;9660:1;9657;9650:12;9630:34;9698:6;9687:9;9683:22;9673:32;;9743:7;9736:4;9732:2;9728:13;9724:27;9714:55;;9765:1;9762;9755:12;9714:55;9805:2;9792:16;9831:2;9823:6;9820:14;9817:34;;;9847:1;9844;9837:12;9817:34;9900:7;9895:2;9885:6;9882:1;9878:14;9874:2;9870:23;9866:32;9863:45;9860:65;;;9921:1;9918;9911:12;9860:65;9952:2;9944:11;;;;;9974:6;;-1:-1:-1;9360:626:22;;-1:-1:-1;;;;9360:626:22:o;9991:801::-;10151:4;10180:2;10220;10209:9;10205:18;10250:2;10239:9;10232:21;10273:6;10308;10302:13;10339:6;10331;10324:22;10377:2;10366:9;10362:18;10355:25;;10439:2;10429:6;10426:1;10422:14;10411:9;10407:30;10403:39;10389:53;;10477:2;10469:6;10465:15;10498:1;10508:255;10522:6;10519:1;10516:13;10508:255;;;10615:2;10611:7;10599:9;10591:6;10587:22;10583:36;10578:3;10571:49;10643:40;10676:6;10667;10661:13;10643:40;:::i;:::-;10633:50;-1:-1:-1;10741:12:22;;;;10706:15;;;;10544:1;10537:9;10508:255;;;-1:-1:-1;10780:6:22;;9991:801;-1:-1:-1;;;;;;;9991:801:22:o;11204:388::-;11272:6;11280;11333:2;11321:9;11312:7;11308:23;11304:32;11301:52;;;11349:1;11346;11339:12;11301:52;11388:9;11375:23;11407:31;11432:5;11407:31;:::i;:::-;11457:5;-1:-1:-1;11514:2:22;11499:18;;11486:32;11527:33;11486:32;11527:33;:::i;11850:380::-;11929:1;11925:12;;;;11972;;;11993:61;;12047:4;12039:6;12035:17;12025:27;;11993:61;12100:2;12092:6;12089:14;12069:18;12066:38;12063:161;;;12146:10;12141:3;12137:20;12134:1;12127:31;12181:4;12178:1;12171:15;12209:4;12206:1;12199:15;12063:161;;11850:380;;;:::o;12235:347::-;12437:2;12419:21;;;12476:2;12456:18;;;12449:30;12515:25;12510:2;12495:18;;12488:53;12573:2;12558:18;;12235:347::o;13625:127::-;13686:10;13681:3;13677:20;13674:1;13667:31;13717:4;13714:1;13707:15;13741:4;13738:1;13731:15;13757:127;13818:10;13813:3;13809:20;13806:1;13799:31;13849:4;13846:1;13839:15;13873:4;13870:1;13863:15;13889:201;13927:3;13955:10;14000:2;13993:5;13989:14;14027:2;14018:7;14015:15;14012:41;;;14033:18;;:::i;:::-;14082:1;14069:15;;13889:201;-1:-1:-1;;;13889:201:22:o;14095:125::-;14135:4;14163:1;14160;14157:8;14154:34;;;14168:18;;:::i;:::-;-1:-1:-1;14205:9:22;;14095:125::o;14579:128::-;14619:3;14650:1;14646:6;14643:1;14640:13;14637:39;;;14656:18;;:::i;:::-;-1:-1:-1;14692:9:22;;14579:128::o;14712:711::-;14795:5;14789:12;14784:3;14777:25;14848:4;14841:5;14837:16;14831:23;-1:-1:-1;;;;;14941:2:22;14927:12;14923:21;14916:4;14911:3;14907:14;14900:45;14993:4;14986:5;14982:16;14976:23;14954:45;;15035:1;15031;15026:3;15022:11;15018:19;15089:2;15073:14;15069:23;15062:4;15057:3;15053:14;15046:47;15154:2;15146:4;15139:5;15135:16;15129:23;15125:32;15118:4;15113:3;15109:14;15102:56;;15207:4;15200:5;15196:16;15190:23;15183:4;15178:3;15174:14;15167:47;15275:2;15267:4;15260:5;15256:16;15250:23;15246:32;15239:4;15234:3;15230:14;15223:56;15340:2;15332:4;15325:5;15321:16;15315:23;15311:32;15304:4;15299:3;15295:14;15288:56;;;15405:10;15397:4;15390:5;15386:16;15380:23;15376:40;15369:4;15364:3;15360:14;15353:64;14712:711;;:::o;15428:790::-;15507:5;15501:12;15539:1;15535:2;15532:9;15522:140;;15584:10;15579:3;15575:20;15572:1;15565:31;15619:4;15616:1;15609:15;15647:4;15644:1;15637:15;15522:140;15671:15;;15739:4;15728:16;;;15722:23;-1:-1:-1;;;;;15718:49:22;15702:14;;;15695:73;15814:4;15803:16;;;15797:23;;15829:47;;15861:14;;15797:23;4886:10;4875:22;4863:35;;4810:94;15829:47;;15924:4;15917:5;15913:16;15907:23;15939:49;15982:4;15977:3;15973:14;15957;-1:-1:-1;;;;;2082:30:22;2070:43;;2017:102;15939:49;;16036:4;16029:5;16025:16;16019:23;16051:49;16094:4;16089:3;16085:14;16069;4886:10;4875:22;4863:35;;4810:94;16051:49;-1:-1:-1;16149:4:22;16138:16;;;16132:23;16116:14;;;16109:47;16205:4;16194:16;;;16188:23;16172:14;;16165:47;15428:790::o;16223:478::-;16525:3;16510:19;;16538:48;16514:9;16568:6;16538:48;:::i;:::-;16595:56;16646:3;16635:9;16631:19;16623:6;16595:56;:::i;:::-;16688:6;16682:3;16671:9;16667:19;16660:35;16223:478;;;;;;:::o;17115:184::-;17185:6;17238:2;17226:9;17217:7;17213:23;17209:32;17206:52;;;17254:1;17251;17244:12;17206:52;-1:-1:-1;17277:16:22;;17115:184;-1:-1:-1;17115:184:22:o;17304:249::-;17373:6;17426:2;17414:9;17405:7;17401:23;17397:32;17394:52;;;17442:1;17439;17432:12;17394:52;17474:9;17468:16;17493:30;17517:5;17493:30;:::i;17558:249::-;17627:6;17680:2;17668:9;17659:7;17655:23;17651:32;17648:52;;;17696:1;17693;17686:12;17648:52;17728:9;17722:16;17747:30;17771:5;17747:30;:::i;18345:228::-;18384:3;18412:10;18449:2;18446:1;18442:10;18479:2;18476:1;18472:10;18510:3;18506:2;18502:12;18497:3;18494:21;18491:47;;;18518:18;;:::i;:::-;18554:13;;18345:228;-1:-1:-1;;;;18345:228:22:o;19270:236::-;19309:3;-1:-1:-1;;;;;19382:2:22;19379:1;19375:10;19412:2;19409:1;19405:10;19443:3;19439:2;19435:12;19430:3;19427:21;19424:47;;;19451:18;;:::i;19511:265::-;19550:3;19578:9;;;19603:10;;-1:-1:-1;;;;;19622:27:22;;;19615:35;;19599:52;19596:78;;;19654:18;;:::i;:::-;-1:-1:-1;;;19701:19:22;;;19694:27;;19686:36;;19683:62;;;19725:18;;:::i;:::-;-1:-1:-1;;19761:9:22;;19511:265::o;19781:253::-;19969:3;19954:19;;19982:46;19958:9;20010:6;19982:46;:::i;20381:168::-;20421:7;20487:1;20483;20479:6;20475:14;20472:1;20469:21;20464:1;20457:9;20450:17;20446:45;20443:71;;;20494:18;;:::i;:::-;-1:-1:-1;20534:9:22;;20381:168::o;20554:127::-;20615:10;20610:3;20606:20;20603:1;20596:31;20646:4;20643:1;20636:15;20670:4;20667:1;20660:15;20686:217;20726:1;20752;20742:132;;20796:10;20791:3;20787:20;20784:1;20777:31;20831:4;20828:1;20821:15;20859:4;20856:1;20849:15;20742:132;-1:-1:-1;20888:9:22;;20686:217::o;23046:127::-;23107:10;23102:3;23098:20;23095:1;23088:31;23138:4;23135:1;23128:15;23162:4;23159:1;23152:15;23178:521;23255:4;23261:6;23321:11;23308:25;23415:2;23411:7;23400:8;23384:14;23380:29;23376:43;23356:18;23352:68;23342:96;;23434:1;23431;23424:12;23342:96;23461:33;;23513:20;;;-1:-1:-1;;;;;;23545:30:22;;23542:50;;;23588:1;23585;23578:12;23542:50;23621:4;23609:17;;-1:-1:-1;23652:14:22;23648:27;;;23638:38;;23635:58;;;23689:1;23686;23679:12;23635:58;23178:521;;;;;:::o;23704:271::-;23887:6;23879;23874:3;23861:33;23843:3;23913:16;;23938:13;;;23913:16;23704:271;-1:-1:-1;23704:271:22:o;23980:884::-;24060:6;24113:2;24101:9;24092:7;24088:23;24084:32;24081:52;;;24129:1;24126;24119:12;24081:52;24162:9;24156:16;-1:-1:-1;;;;;24232:2:22;24224:6;24221:14;24218:34;;;24248:1;24245;24238:12;24218:34;24286:6;24275:9;24271:22;24261:32;;24331:7;24324:4;24320:2;24316:13;24312:27;24302:55;;24353:1;24350;24343:12;24302:55;24382:2;24376:9;24404:2;24400;24397:10;24394:36;;;24410:18;;:::i;:::-;24485:2;24479:9;24453:2;24539:13;;-1:-1:-1;;24535:22:22;;;24559:2;24531:31;24527:40;24515:53;;;24583:18;;;24603:22;;;24580:46;24577:72;;;24629:18;;:::i;:::-;24669:10;24665:2;24658:22;24704:2;24696:6;24689:18;24744:7;24739:2;24734;24730;24726:11;24722:20;24719:33;24716:53;;;24765:1;24762;24755:12;24716:53;24778:55;24830:2;24825;24817:6;24813:15;24808:2;24804;24800:11;24778:55;:::i;24869:135::-;24908:3;-1:-1:-1;;24929:17:22;;24926:43;;;24949:18;;:::i;:::-;-1:-1:-1;24996:1:22;24985:13;;24869:135::o;25009:251::-;25079:6;25132:2;25120:9;25111:7;25107:23;25103:32;25100:52;;;25148:1;25145;25138:12;25100:52;25180:9;25174:16;25199:31;25224:5;25199:31;:::i;25265:443::-;25361:6;25414:2;25402:9;25393:7;25389:23;25385:32;25382:52;;;25430:1;25427;25420:12;25382:52;25463:2;25457:9;25505:2;25497:6;25493:15;25574:6;25562:10;25559:22;-1:-1:-1;;;;;25526:10:22;25523:34;25520:62;25517:88;;;25585:18;;:::i;:::-;25621:2;25614:22;25660:16;;25645:32;;-1:-1:-1;25652:6:22;25265:443;-1:-1:-1;25265:443:22:o;27566:357::-;27786:3;27771:19;;27799:48;27775:9;27829:6;27799:48;:::i;:::-;-1:-1:-1;;;;;27884:32:22;;;;27878:3;27863:19;;;;27856:61;27566:357;;-1:-1:-1;27566:357:22:o;27928:539::-;28200:3;28185:19;;28213:48;28189:9;28243:6;28213:48;:::i;:::-;28310:10;28298:23;;;;28292:3;28277:19;;28270:52;-1:-1:-1;;;;;28359:31:22;;;;28353:3;28338:19;;28331:60;-1:-1:-1;;;;;28428:32:22;28422:3;28407:19;;;28400:61;27928:539;;-1:-1:-1;27928:539:22:o;31057:267::-;31096:4;31125:9;;;31150:10;;-1:-1:-1;;;31169:19:22;;31162:27;;31146:44;31143:70;;;31193:18;;:::i;:::-;-1:-1:-1;;;;;31240:27:22;;31233:35;;31225:44;;31222:70;;;31272:18;;:::i;:::-;-1:-1:-1;;31309:9:22;;31057:267::o;32494:933::-;32845:4;32874:3;32904:6;32893:9;32886:25;32930:10;32988:2;32980:6;32976:15;32971:2;32960:9;32956:18;32949:43;33028:2;33023;33012:9;33008:18;33001:30;33048:45;33089:2;33078:9;33074:18;33066:6;33048:45;:::i;:::-;-1:-1:-1;;;;;33167:15:22;;;33162:2;33147:18;;33140:43;33214:3;33199:19;;33192:35;;;;33120:3;33243:19;;33236:35;;;;-1:-1:-1;;33308:15:22;;;;33302:3;33287:19;;33280:44;33361:15;;;33355:3;33340:19;;33333:44;33408:3;33393:19;;;33386:35;;;;33040:53;32494:933;-1:-1:-1;;;32494:933:22:o;33432:1599::-;33730:4;33759:3;33789:6;33778:9;33771:25;33844:10;33836:6;33832:23;33827:2;33816:9;33812:18;33805:51;33892:2;33887;33876:9;33872:18;33865:30;33912:45;33953:2;33942:9;33938:18;33930:6;33912:45;:::i;:::-;33904:53;;;33966;34015:2;34004:9;34000:18;33991:6;33985:13;-1:-1:-1;;;;;6380:31:22;6368:44;;6314:104;33966:53;34066:2;34054:15;;34048:22;-1:-1:-1;;;;;6380:31:22;;34127:3;34112:19;;6368:44;-1:-1:-1;34181:2:22;34169:15;;34163:22;-1:-1:-1;;;;;6380:31:22;;34244:3;34229:19;;6368:44;-1:-1:-1;34298:2:22;34286:15;;34280:22;1799:13;;1792:21;34358:3;34343:19;;1780:34;34311:52;34418:3;34410:6;34406:16;34400:23;34394:3;34383:9;34379:19;34372:52;34461:3;34453:6;34449:16;34443:23;34485:3;34524:2;34519;34508:9;34504:18;34497:30;34564:3;34556:6;34552:16;34546:23;34536:33;;34588:3;34627:2;34622;34611:9;34607:18;34600:30;34667:3;34659:6;34655:16;34649:23;34639:33;;34691:3;34730:2;34725;34714:9;34710:18;34703:30;34788:2;34780:6;34776:15;34770:22;34764:3;34753:9;34749:19;34742:51;34848:2;34840:6;34836:15;34830:22;34824:3;34813:9;34809:19;34802:51;34908:2;34900:6;34896:15;34890:22;34884:3;34873:9;34869:19;34862:51;;;;;34922:47;34964:3;34953:9;34949:19;34941:6;-1:-1:-1;;;;;6380:31:22;6368:44;;6314:104;34922:47;-1:-1:-1;;;;;6380:31:22;;35020:3;35005:19;;6368:44;34978:47;6314:104;35036:245;35103:6;35156:2;35144:9;35135:7;35131:23;35127:32;35124:52;;;35172:1;35169;35162:12;35124:52;35204:9;35198:16;35223:28;35245:5;35223:28;:::i;35697:658::-;35918:3;35956:6;35950:13;35972:53;36018:6;36013:3;36006:4;35998:6;35994:17;35972:53;:::i;:::-;36088:13;;36047:16;;;;36110:57;36088:13;36047:16;36144:4;36132:17;;36110:57;:::i;:::-;36234:13;;36189:20;;;36256:57;36234:13;36189:20;36290:4;36278:17;;36256:57;:::i;:::-;36329:20;;35697:658;-1:-1:-1;;;;;35697:658:22:o;36783:570::-;-1:-1:-1;;;37139:3:22;37132:16;37114:3;37177:6;37171:13;37193:61;37247:6;37243:1;37238:3;37234:11;37227:4;37219:6;37215:17;37193:61;:::i;:::-;-1:-1:-1;;;37313:1:22;37273:16;;;;37305:10;;;37298:23;-1:-1:-1;37345:1:22;37337:10;;36783:570;-1:-1:-1;36783:570:22:o;37358:437::-;37588:3;37626:6;37620:13;37642:53;37688:6;37683:3;37676:4;37668:6;37664:17;37642:53;:::i;:::-;-1:-1:-1;;;37717:16:22;;37742:18;;;-1:-1:-1;37787:1:22;37776:13;;37358:437;-1:-1:-1;37358:437:22:o;38817:274::-;38946:3;38984:6;38978:13;39000:53;39046:6;39041:3;39034:4;39026:6;39022:17;39000:53;:::i;:::-;39069:16;;;;;38817:274;-1:-1:-1;;38817:274:22:o"
                        },
                        "methodIdentifiers": {
                            "addLiquidity(uint256)": "51c6590a",
                            "allowance(address,address)": "dd62ed3e",
                            "approve(address,uint256)": "095ea7b3",
                            "balanceOf(address)": "70a08231",
                            "bonds()": "135c404e",
                            "bridgeAdmin()": "a6af2dfe",
                            "changeAdmin(address)": "8f283970",
                            "decimals()": "313ce567",
                            "decreaseAllowance(address,uint256)": "a457c2d7",
                            "disputeRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))": "cefed55f",
                            "exchangeRateCurrent()": "bd6d894d",
                            "getAccumulatedFees()": "5df45a37",
                            "getCurrentTime()": "29cb924d",
                            "getLiquidityUtilization(uint256)": "ed4de3a3",
                            "getRelayAncillaryData((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))": "1bf71c38",
                            "identifier()": "7998a1c4",
                            "increaseAllowance(address,uint256)": "39509351",
                            "instantRelays(bytes32)": "b454e326",
                            "isWethPool()": "cc2c929e",
                            "l1Token()": "c01e1bd6",
                            "lastLpFeeUpdate()": "f1d24bab",
                            "liquidReserves()": "b2084202",
                            "liquidityUtilizationCurrent()": "19e9d894",
                            "liquidityUtilizationPostRelay(uint256)": "62822d34",
                            "lpFeeRatePerSecond()": "11cfc159",
                            "multicall(bytes[])": "ac9650d8",
                            "name()": "06fdde03",
                            "numberOfRelays()": "d412f5a4",
                            "optimisticOracle()": "22302922",
                            "optimisticOracleLiveness()": "173684c5",
                            "pendingReserves()": "87a515d3",
                            "proposerBondPct()": "c73a32c3",
                            "relayAndSpeedUp((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)": "753b91bb",
                            "relayDeposit((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)": "13111725",
                            "relays(bytes32)": "df738fc8",
                            "relaysEnabled()": "be0ba122",
                            "removeLiquidity(uint256,bool)": "4f52fd17",
                            "setCurrentTime(uint256)": "22f8e566",
                            "setLpFeeRatePerSecond(uint64)": "27f224ca",
                            "setRelaysEnabled(bool)": "08ed5b14",
                            "settleRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))": "3fa856c9",
                            "speedUpRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))": "bec73ade",
                            "store()": "975057e7",
                            "symbol()": "95d89b41",
                            "sync()": "fff6cae9",
                            "syncUmaEcosystemParams()": "b5351ee2",
                            "syncWithBridgeAdminParams()": "3cc400b3",
                            "timerAddress()": "1c39c38d",
                            "totalSupply()": "18160ddd",
                            "transfer(address,uint256)": "a9059cbb",
                            "transferFrom(address,address,uint256)": "23b872dd",
                            "undistributedLpFees()": "4464fae4",
                            "utilizedReserves()": "66db5240"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_lpTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_lpTokenSymbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_bridgeAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_lpFeeRatePerSecond\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isWethPool\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_timer\",\"type\":\"address\"}],\"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\":false,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"BridgePoolAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relay\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"relayAncillaryDataHash\",\"type\":\"bytes32\"}],\"name\":\"DepositRelayed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpTokensMinted\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpTokensBurnt\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"LpFeeRateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"relayHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"RelayCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"relayHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"RelayDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relay\",\"type\":\"tuple\"}],\"name\":\"RelaySettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"instantRelayer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relay\",\"type\":\"tuple\"}],\"name\":\"RelaySpedUp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newRelaysEnabled\",\"type\":\"bool\"}],\"name\":\"RelaysEnabledSet\",\"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\":\"uint256\",\"name\":\"l1TokenAmount\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"bonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAdmin\",\"outputs\":[{\"internalType\":\"contract BridgeAdminInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"disputeRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccumulatedFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relayedAmount\",\"type\":\"uint256\"}],\"name\":\"getLiquidityUtilization\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"utilizationCurrent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"utilizationPostRelay\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"getRelayAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"instantRelays\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isWethPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastLpFeeUpdate\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidityUtilizationCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relayedAmount\",\"type\":\"uint256\"}],\"name\":\"liquidityUtilizationPostRelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lpFeeRatePerSecond\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfRelays\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optimisticOracle\",\"outputs\":[{\"internalType\":\"contract SkinnyOptimisticOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optimisticOracleLiveness\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposerBondPct\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"}],\"name\":\"relayAndSpeedUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"}],\"name\":\"relayDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"relays\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relaysEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sendEth\",\"type\":\"bool\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"setLpFeeRatePerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_relaysEnabled\",\"type\":\"bool\"}],\"name\":\"setRelaysEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"settleRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"speedUpRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"store\",\"outputs\":[{\"internalType\":\"contract StoreInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"syncUmaEcosystemParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"syncWithBridgeAdminParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"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\":[],\"name\":\"undistributedLpFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"utilizedReserves\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"details\":\"A \\\"Deposit\\\" is an order to send capital from L2 to L1, and a \\\"Relay\\\" is a fulfillment attempt of that order.\",\"kind\":\"dev\",\"methods\":{\"addLiquidity(uint256)\":{\"details\":\"The caller must approve this contract to transfer `l1TokenAmount` amount of l1Token if depositing ERC20.The caller can deposit ETH which is auto wrapped to WETH. This can only be done if: a) this is the Weth pool and b) the l1TokenAmount matches to the transaction msg.value.Reentrancy guard not added to this function because this indirectly calls sync() which is guarded.\",\"params\":{\"l1TokenAmount\":\"Number of l1Token to add as liquidity.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"changeAdmin(address)\":{\"details\":\"Caller must be BridgeAdmin contract.\",\"params\":{\"_newAdmin\":\"Admin address of the new admin.\"}},\"constructor\":{\"params\":{\"_bridgeAdmin\":\"Admin contract deployed alongside on L1. Stores global variables and has owner control.\",\"_isWethPool\":\"Toggles if this is the WETH pool. If it is then can accept ETH and wrap to WETH for the user.\",\"_l1Token\":\"Address of the L1 token that this bridgePool holds. This is the token LPs deposit and is bridged.\",\"_lpFeeRatePerSecond\":\"Interest rate payment that scales the amount of pending fees per second paid to LPs.\",\"_lpTokenName\":\"Name of the LP token to be deployed by this contract.\",\"_lpTokenSymbol\":\"Symbol of the LP token to be deployed by this contract.\",\"_timer\":\"Timer used to synchronize contract time in testing. Set to 0x000... in production.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"disputeRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"details\":\"The result of this method is to always throw out the relay, providing an opportunity for another relay for the same deposit. Between the disputer and proposer, whoever is incorrect loses their bond. Whoever is correct gets it back + a payout.Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.\",\"params\":{\"depositData\":\"the deposit data struct containing all the user's deposit information.\",\"relayData\":\"RelayData logged in the disputed relay.\"}},\"exchangeRateCurrent()\":{\"returns\":{\"_0\":\"The updated exchange rate between LP tokens and L1 tokens.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"getLiquidityUtilization(uint256)\":{\"details\":\"Used in computing realizedLpFeePct off-chain.\",\"params\":{\"relayedAmount\":\"Size of the relayed deposit to factor into the utilization calculation.\"},\"returns\":{\"utilizationCurrent\":\"The current utilization ratio.\",\"utilizationPostRelay\":\"The updated utilization ratio accounting for a new `relayedAmount`.\"}},\"getRelayAncillaryData((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"details\":\"Helpful method to test that ancillary data is constructed properly. We should consider removing if we don't anticipate off-chain bots or users to call this method.\",\"params\":{\"depositData\":\"Contains L2 deposit information used by off-chain validators to validate relay.\",\"relayData\":\"Contains relay information used by off-chain validators to validate relay.\"},\"returns\":{\"_0\":\"bytes New ancillary data that can be decoded into UTF8.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"liquidityUtilizationCurrent()\":{\"details\":\"Used in computing realizedLpFeePct off-chain.\",\"returns\":{\"_0\":\"The current utilization ratio.\"}},\"liquidityUtilizationPostRelay(uint256)\":{\"details\":\"Used in computing realizedLpFeePct off-chain.\",\"params\":{\"relayedAmount\":\"Size of the relayed deposit to factor into the utilization calculation.\"},\"returns\":{\"_0\":\"The updated utilization ratio accounting for a new `relayedAmount`.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"relayAndSpeedUp((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)\":{\"details\":\"There can only be one pending relay for a deposit. This method is effectively the relayDeposit and speedUpRelay methods concatenated. This could be refactored to just call each method, but there are some gas savings in combining the transfers and hash computations.Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.This function can only be called if relays are enabled for this bridge pool.\",\"params\":{\"depositData\":\"the deposit data struct containing all the user's deposit information.\",\"realizedLpFeePct\":\"LP fee calculated off-chain considering the L1 pool liquidity at deposit time, before      quoteTimestamp. The OO acts to verify the correctness of this realized fee. Cannot exceed 50%.\"}},\"relayDeposit((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)\":{\"details\":\"There can only be one pending relay for a deposit.Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.This function can only be called if relays are enabled for this bridge pool.\",\"params\":{\"depositData\":\"the deposit data struct containing all the user's deposit information.\",\"realizedLpFeePct\":\"LP fee calculated off-chain considering the L1 pool liquidity at deposit time, before      quoteTimestamp. The OO acts to verify the correctness of this realized fee. Cannot exceed 50%.\"}},\"removeLiquidity(uint256,bool)\":{\"details\":\"The caller does not need to approve the spending of LP tokens as this method directly uses the burn logic.Reentrancy guard not added to this function because this indirectly calls sync() which is guarded.\",\"params\":{\"lpTokenAmount\":\"Number of lpTokens to redeem for underlying.\",\"sendEth\":\"Enable the liquidity provider to remove liquidity in ETH, if this is the WETH pool.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}},\"setLpFeeRatePerSecond(uint64)\":{\"details\":\"Caller must be BridgeAdmin contract.\",\"params\":{\"_newLpFeeRatePerSecond\":\"The new rate to set.\"}},\"setRelaysEnabled(bool)\":{\"details\":\"Caller must be BridgeAdmin contract.\",\"params\":{\"_relaysEnabled\":\"The new relaysEnabled state.\"}},\"settleRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"details\":\"We use the relayData and depositData to compute the ancillary data that the relay price request is uniquely associated with on the OptimisticOracle. If the price request passed in does not match the pending relay price request, then this will revert.\",\"params\":{\"depositData\":\"Unique set of L2 deposit data that caller is trying to settle a relay for.\",\"relayData\":\"Parameters of Relay that caller is attempting to settle. Must hash to the stored relay hash for this deposit.\"}},\"speedUpRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"details\":\"We assume that the caller has performed an off-chain check that the deposit data they are attempting to relay is valid. If the deposit data is invalid, then the instant relayer has no recourse to receive their funds back after the invalid deposit data is disputed. Moreover, no one will be able to resubmit a relay for the invalid deposit data because they know it will get disputed again. On the other hand, if the deposit data is valid, then even if it is falsely disputed, the instant relayer will eventually get reimbursed because someone else will be incentivized to resubmit the relay to earn slow relayer rewards. Once the valid relay is finalized, the instant relayer will be reimbursed. Therefore, the caller has the same responsibility as the disputer in validating the relay data.Caller must have approved this contract to spend the deposit amount of L1 tokens to relay. There can only be one instant relayer per relay attempt. You cannot speed up a relay that is past liveness.\",\"params\":{\"depositData\":\"Unique set of L2 deposit data that caller is trying to instantly relay.\",\"relayData\":\"Parameters of Relay that caller is attempting to speedup. Must hash to the stored relay hash for this deposit or this method will revert.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"syncUmaEcosystemParams()\":{\"details\":\"There is no risk of leaving this function public for anyone to call as in all cases we want the addresses in this contract to map to the latest version in the Finder and store the latest final fee.\"},\"syncWithBridgeAdminParams()\":{\"details\":\"There is no risk of leaving this function public for anyone to call as in all cases we want these values in this contract to map to the latest version set in the BridgeAdmin.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity(uint256)\":{\"notice\":\"Add liquidity to the bridge pool. Pulls l1Token from the caller's wallet. The caller is sent back a commensurate number of LP tokens (minted to their address) at the prevailing exchange rate.\"},\"changeAdmin(address)\":{\"notice\":\"Enable the current bridge admin to transfer admin to to a new address.\"},\"constructor\":{\"notice\":\"Construct the Bridge Pool.\"},\"disputeRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"notice\":\"Called by Disputer to dispute an ongoing relay.\"},\"exchangeRateCurrent()\":{\"notice\":\"Computes the exchange rate between LP tokens and L1Tokens. Used when adding/removing liquidity.\"},\"getAccumulatedFees()\":{\"notice\":\"Computes the current amount of unallocated fees that have accumulated from the previous time this the contract was called.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"getLiquidityUtilization(uint256)\":{\"notice\":\"Return both the current utilization value and liquidity utilization post the relay.\"},\"getRelayAncillaryData((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"notice\":\"Returns ancillary data containing all relevant Relay data that voters can format into UTF8 and use to determine if the relay is valid.\"},\"liquidityUtilizationCurrent()\":{\"notice\":\"Computes the current liquidity utilization ratio.\"},\"liquidityUtilizationPostRelay(uint256)\":{\"notice\":\"Computes the liquidity utilization ratio post a relay of known size.\"},\"relayAndSpeedUp((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)\":{\"notice\":\"Called by Relayer to execute a slow + fast relay from L2 to L1, fulfilling a corresponding deposit order.\"},\"relayDeposit((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)\":{\"notice\":\"Called by Relayer to execute a slow relay from L2 to L1, fulfilling a corresponding deposit order.\"},\"removeLiquidity(uint256,bool)\":{\"notice\":\"Removes liquidity from the bridge pool. Burns lpTokenAmount LP tokens from the caller's wallet. The caller is sent back a commensurate number of l1Tokens at the prevailing exchange rate.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"},\"setLpFeeRatePerSecond(uint64)\":{\"notice\":\"Enable the bridge admin to change the decay rate at which LP shares accumulate fees. The higher this value, the faster LP shares realize pending fees.\"},\"setRelaysEnabled(bool)\":{\"notice\":\"Enable the bridge admin to enable/disable relays for this pool. Acts as a pause. Only effects relayDeposit and relayAndSpeedUp methods. ALl other contract logic remains functional after a pause.\"},\"settleRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"notice\":\"Reward relayers if a pending relay price request has a price available on the OptimisticOracle. Mark the relay as complete.\"},\"speedUpRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"notice\":\"Instantly relay a deposit amount minus fees to the l1Recipient. Instant relayer earns a reward following the pending relay challenge period.\"},\"sync()\":{\"notice\":\"Synchronize any balance changes in this contract with the utilized & liquid reserves. This would be done at the conclusion of an L2 -> L1 token transfer via the canonical token bridge.\"},\"syncUmaEcosystemParams()\":{\"notice\":\"Updates the address stored in this contract for the OptimisticOracle and the Store to the latest versions set in the the Finder. Also pull finalFee Store these as local variables to make relay methods gas efficient.\"},\"syncWithBridgeAdminParams()\":{\"notice\":\"Updates the values of stored constants for the proposerBondPct, optimisticOracleLiveness and identifier to that set in the bridge Admin. We store these as local variables to make the relay methods more gas efficient.\"}},\"notice\":\"Contract deployed on L1 that provides methods for \\\"Relayers\\\" to fulfill deposit orders that originated on L2. The Relayers can either post capital to fulfill the deposit (instant relay), or request that the funds are taken out of a passive liquidity provider pool following a challenge period (slow relay). This contract ingests liquidity from passive liquidity providers and returns them claims to withdraw their funds. Liquidity providers are incentivized to post collateral by earning a fee per fulfilled deposit order.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/BridgePool.sol\":\"BridgePool\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xfeccdcbf67b2006a715e5af1a4c7556004d95b2806552b5cc54e46e8eb7e887b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45b1f9043c0fb450272f20ed19ef633fcba1b129d602651a856dfae1a2243a2c\",\"dweb:/ipfs/QmUTSQiDikkcNtTtyDpkEwCM5ztVUUh9c1inBukn6HC5Vr\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b31b80dd57f8c28320b01fa4f3ed98ac1aa678f61846c1db2771c996b77a9451\",\"dweb:/ipfs/QmcT2Di5L9t82A9XdYDZ4tWMEPGFVFazKDwC2Vrd135AA3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a4c96fafff76deda5697c3c5c98cade6e6e1b178254544c106bf360c079ce4e\",\"dweb:/ipfs/QmXmxubE3jnatFgZuN8ay1VV6hZ8WRmhvUjNpeVjki15HX\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc2bfdea0d2562c76fb3c4cf70a86c6ba25c5a30e8f8515c95aafdf8383f8395\",\"dweb:/ipfs/QmTbFya18786ckJfLYUoWau9jBTKfmWnWm5XSViWvB7PXN\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f9529d3d365e8415155cee11394e0f7c0de2152b601b7e77508fce16cb4a509\",\"dweb:/ipfs/QmVhbcLVsAzvqfjsdLwy25XMjgVJm7Z3w2JCNiNbZF2GHT\"]},\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://873363c817ef68913ced271e77fc4af21d4a94ffba23de2b205c6e9de8ff6b72\",\"dweb:/ipfs/QmNmN46R3rrvTxMUjDTbZiCiqqTX9TRvWbiaN9qLrWQXPS\"]},\"contracts/common/implementation/AncillaryData.sol\":{\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0bbaed49756e8cf7ef405e132f441cd7a735ac6186a200b0179147e7d137b74a\",\"dweb:/ipfs/QmeSBJX5a61LZPxbkUKS2NF4LSxemgDwjD65fCAmyP7PX2\"]},\"contracts/common/implementation/FixedPoint.sol\":{\"keccak256\":\"0x996b97cc4fa5da4064e3aee500edc6972485d59a9334ceec81155e2c2f484dae\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d7c028926dc2b27e7dc103363dca8a43f60b3351f4a14bcb702660f95c68663\",\"dweb:/ipfs/QmXz4ieFjP5RxJ35F8GbPryYEGvFmxc4Gqx8EK7N57ixzT\"]},\"contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://aef5cb31ab23e1e6baad76130c29aff1ee3fcda3c4ffc80e0a5294341a253934\",\"dweb:/ipfs/QmNyso4UszNxE6un3Cqc3R7KiBmZzdWNULvjBDfnLRAmwc\"]},\"contracts/common/implementation/MultiCaller.sol\":{\"keccak256\":\"0x31f18055b14fd9eeb459c6d6a88d1a60921bf3755031f6db4b709c3e01d078f7\",\"urls\":[\"bzz-raw://1a002084305bc747b23e69e24cfd1f3aa730adc22dd76d1e077dc72bcffc41f0\",\"dweb:/ipfs/Qmb611uGKzhc2MHkMhqW3NG49FY3Tg1udh7zXttmPtfU2s\"]},\"contracts/common/implementation/Testable.sol\":{\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://537d694e3753596f507d071f283be9caeaad0010c444c9c9955d729affeb4907\",\"dweb:/ipfs/QmZ1WfVTBao11QaN6aygMhnt45UjRq77ZwfKPFmHiVSdaJ\"]},\"contracts/common/implementation/Timer.sol\":{\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://7ddac8d3cb76f8811156a11a7702d7c05b15a0f18c22b5abdc318723193f9266\",\"dweb:/ipfs/QmPxL7AU8NkURJaZ6WxXNcw88wGMSoPX4jbt7SMdPJqtYv\"]},\"contracts/insured-bridge/BridgePool.sol\":{\"keccak256\":\"0x9c5c7c3b718c6bfa3acd1a200728505f925f089373e8745ceb43cd5ac561dc29\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0ad13a7138b556cbadb7afb140d56b057a1a8afff34de50c2cb1d898c886fef2\",\"dweb:/ipfs/QmVCZFJGismpapK5wXGifBb4yu9cma45he61NzEgecJ2cW\"]},\"contracts/insured-bridge/interfaces/BridgeAdminInterface.sol\":{\"keccak256\":\"0x1fb2737503a627f20fd42538bb0ed3b4c8bd3905ad19906b5d6e2f1ff3d8336f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e3643f87c9029fe02b38f0b00a0ec459da10e47fa8b58d5e7bcd548d52dfee41\",\"dweb:/ipfs/QmXfJpxmhzCG6KEYg8nhUfoHcHN2d9v3JtSm2CstLMusow\"]},\"contracts/insured-bridge/interfaces/BridgePoolInterface.sol\":{\"keccak256\":\"0xecfb4d11dca8a0a07c73e7104426a86e96c35e905fc436405adcd1eec8be383f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://51ea861b6323883911c7e05055e2674eb9764c6eb4310b4b71bef6bf1af48ffd\",\"dweb:/ipfs/QmNZ1UWJKefn1m3XBr1g5ZVHLP9qGu8x7QpRKFCPt34b5N\"]},\"contracts/oracle/implementation/Constants.sol\":{\"keccak256\":\"0xdb839b42f7348bdd64e2ab1bfbcca64dac758313192024abb815936a9f2eca1a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9acf048e365270ef3b8f08ca06cdeb0a2f38a1c8313bd166a0fe5d50df495133\",\"dweb:/ipfs/QmcHEui3yYE9aYkJe2wmm5Wi42gG6ekU2VZDV9qFpWyRkV\"]},\"contracts/oracle/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]},\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":{\"keccak256\":\"0x92e7280c1abd5f0c4fcd20247fc1b8428aaf4eeea59439c074d15fdaf9c64989\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d12bbcf0a91cef63c4767bffd047254599c5a1fce38e5e81d3005e102fdeef8\",\"dweb:/ipfs/QmTkd3AG9gdvBZq3HKCUW8eErvkguM2QqE3nUDGfvye3Yi\"]},\"contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol\":{\"keccak256\":\"0x91d21e44a97b719106e8f97b99399a3d8dc3697badd01df06518892f38fe033f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://68c350c822b256b43543ac4dd3dd1413ed95f25a9415d5dba4c562cd11d55716\",\"dweb:/ipfs/QmZyYeBnM59oPmWcK1KERNayg7xuHv12sLzzmqC42Lq76a\"]},\"contracts/oracle/interfaces/StoreInterface.sol\":{\"keccak256\":\"0xbb73671684309c91ad5ef3da1474051d03f2e7d5882bed7f5c4317e5d4c768df\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://32386544d3119fd0187a8c4e8b01c739f508ab863faa04345cabc2544081f9e8\",\"dweb:/ipfs/QmYszDURs1x75rsejZkGt9zCkASXnJtufbNsL3XHe2eJPQ\"]}},\"version\":1}"
                },
                "BridgePoolProd": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "string",
                                    "name": "_lpTokenName",
                                    "type": "string"
                                },
                                {
                                    "internalType": "string",
                                    "name": "_lpTokenSymbol",
                                    "type": "string"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_bridgeAdmin",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_l1Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "_lpFeeRatePerSecond",
                                    "type": "uint64"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "_isWethPool",
                                    "type": "bool"
                                },
                                {
                                    "internalType": "address",
                                    "name": "_timer",
                                    "type": "address"
                                }
                            ],
                            "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": false,
                                    "internalType": "address",
                                    "name": "oldAdmin",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "BridgePoolAdminTransferred",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "indexed": false,
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "indexed": false,
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relay",
                                    "type": "tuple"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bytes32",
                                    "name": "relayAncillaryDataHash",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "DepositRelayed",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "lpTokensMinted",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "liquidityProvider",
                                    "type": "address"
                                }
                            ],
                            "name": "LiquidityAdded",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "amount",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "lpTokensBurnt",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "liquidityProvider",
                                    "type": "address"
                                }
                            ],
                            "name": "LiquidityRemoved",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "LpFeeRateSet",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "relayHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "disputer",
                                    "type": "address"
                                }
                            ],
                            "name": "RelayCanceled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "relayHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "disputer",
                                    "type": "address"
                                }
                            ],
                            "name": "RelayDisputed",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "caller",
                                    "type": "address"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "indexed": false,
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relay",
                                    "type": "tuple"
                                }
                            ],
                            "name": "RelaySettled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "depositHash",
                                    "type": "bytes32"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "instantRelayer",
                                    "type": "address"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "indexed": false,
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relay",
                                    "type": "tuple"
                                }
                            ],
                            "name": "RelaySpedUp",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "newRelaysEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "RelaysEnabledSet",
                            "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": "uint256",
                                    "name": "l1TokenAmount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "addLiquidity",
                            "outputs": [],
                            "stateMutability": "payable",
                            "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": "bonds",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "bridgeAdmin",
                            "outputs": [
                                {
                                    "internalType": "contract BridgeAdminInterface",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "_newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "changeAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "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": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relayData",
                                    "type": "tuple"
                                }
                            ],
                            "name": "disputeRelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "exchangeRateCurrent",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getAccumulatedFees",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "getCurrentTime",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "relayedAmount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "getLiquidityUtilization",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "utilizationCurrent",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "utilizationPostRelay",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relayData",
                                    "type": "tuple"
                                }
                            ],
                            "name": "getRelayAncillaryData",
                            "outputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "identifier",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "spender",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "addedValue",
                                    "type": "uint256"
                                }
                            ],
                            "name": "increaseAllowance",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "instantRelays",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "isWethPool",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Token",
                            "outputs": [
                                {
                                    "internalType": "contract IERC20",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "lastLpFeeUpdate",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "liquidReserves",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "liquidityUtilizationCurrent",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "relayedAmount",
                                    "type": "uint256"
                                }
                            ],
                            "name": "liquidityUtilizationPostRelay",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "lpFeeRatePerSecond",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "data",
                                    "type": "bytes[]"
                                }
                            ],
                            "name": "multicall",
                            "outputs": [
                                {
                                    "internalType": "bytes[]",
                                    "name": "results",
                                    "type": "bytes[]"
                                }
                            ],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "name",
                            "outputs": [
                                {
                                    "internalType": "string",
                                    "name": "",
                                    "type": "string"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "numberOfRelays",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "optimisticOracle",
                            "outputs": [
                                {
                                    "internalType": "contract SkinnyOptimisticOracleInterface",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "optimisticOracleLiveness",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "pendingReserves",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "proposerBondPct",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "realizedLpFeePct",
                                    "type": "uint64"
                                }
                            ],
                            "name": "relayAndSpeedUp",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "uint64",
                                    "name": "realizedLpFeePct",
                                    "type": "uint64"
                                }
                            ],
                            "name": "relayDeposit",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "relays",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "relaysEnabled",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "lpTokenAmount",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bool",
                                    "name": "sendEth",
                                    "type": "bool"
                                }
                            ],
                            "name": "removeLiquidity",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "time",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCurrentTime",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "_newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setLpFeeRatePerSecond",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bool",
                                    "name": "_relaysEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "setRelaysEnabled",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relayData",
                                    "type": "tuple"
                                }
                            ],
                            "name": "settleRelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "chainId",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "depositId",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "address payable",
                                            "name": "l1Recipient",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "l2Sender",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "amount",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "slowRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "instantRelayFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "quoteTimestamp",
                                            "type": "uint32"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.DepositData",
                                    "name": "depositData",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "enum BridgePool.RelayState",
                                            "name": "relayState",
                                            "type": "uint8"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "slowRelayer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "relayId",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint64",
                                            "name": "realizedLpFeePct",
                                            "type": "uint64"
                                        },
                                        {
                                            "internalType": "uint32",
                                            "name": "priceRequestTime",
                                            "type": "uint32"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "proposerBond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct BridgePool.RelayData",
                                    "name": "relayData",
                                    "type": "tuple"
                                }
                            ],
                            "name": "speedUpRelay",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "store",
                            "outputs": [
                                {
                                    "internalType": "contract StoreInterface",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "symbol",
                            "outputs": [
                                {
                                    "internalType": "string",
                                    "name": "",
                                    "type": "string"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "sync",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "syncUmaEcosystemParams",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "syncWithBridgeAdminParams",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "timerAddress",
                            "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": [],
                            "name": "undistributedLpFees",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "utilizedReserves",
                            "outputs": [
                                {
                                    "internalType": "int256",
                                    "name": "",
                                    "type": "int256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "stateMutability": "payable",
                            "type": "receive"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {
                                "@_3582": {
                                    "entryPoint": null,
                                    "id": 3582,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_3734": {
                                    "entryPoint": null,
                                    "id": 3734,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_4143": {
                                    "entryPoint": null,
                                    "id": 4143,
                                    "parameterSlots": 7,
                                    "returnSlots": 0
                                },
                                "@_44": {
                                    "entryPoint": null,
                                    "id": 44,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_5980": {
                                    "entryPoint": null,
                                    "id": 5980,
                                    "parameterSlots": 7,
                                    "returnSlots": 0
                                },
                                "@_postEntranceReset_3629": {
                                    "entryPoint": null,
                                    "id": 3629,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_3613": {
                                    "entryPoint": 1711,
                                    "id": 3613,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_3621": {
                                    "entryPoint": null,
                                    "id": 3621,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@getCurrentTime_5990": {
                                    "entryPoint": null,
                                    "id": 5990,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@syncUmaEcosystemParams_5247": {
                                    "entryPoint": 533,
                                    "id": 5247,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@syncWithBridgeAdminParams_5272": {
                                    "entryPoint": 1179,
                                    "id": 5272,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_address_fromMemory": {
                                    "entryPoint": 2183,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_string_fromMemory": {
                                    "entryPoint": 2034,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 2441,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32_fromMemory": {
                                    "entryPoint": 2617,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_addresst_uint64t_boolt_address_fromMemory": {
                                    "entryPoint": 2236,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 7
                                },
                                "abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory": {
                                    "entryPoint": 2478,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint32_fromMemory": {
                                    "entryPoint": 2577,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64_fromMemory": {
                                    "entryPoint": 2547,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64_fromMemory": {
                                    "entryPoint": 2212,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_bbafc52390f55679de28d6789281f62ca2e8900a287d1789da1882ca242675c1__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "allocate_memory": {
                                    "entryPoint": 1983,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 2643,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 1961,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:5590:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "46:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "63:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "70:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "75:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "66:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "66:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "56:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "56:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "56:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "103:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "106:4:22",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "96:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "96:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "96:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "127:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "130:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "120:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "120:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "120:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "14:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "191:230:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "201:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "217:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "211:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "211:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "201:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "229:58:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "251:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "size",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "267:4:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "273:2:22",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "263:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "263:13:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "282:2:22",
                                                                                        "type": "",
                                                                                        "value": "31"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "not",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "278:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "278:7:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "259:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "259:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "247:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "247:40:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "233:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "362:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "364:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "364:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "364:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "305:10:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "325:2:22",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "329:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "321:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "321:10:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "333:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "317:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "317:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "302:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "302:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "341:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "353:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "338:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "338:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "299:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "299:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "296:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "400:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "404:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "393:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "393:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "393:22:22"
                                                        }
                                                    ]
                                                },
                                                "name": "allocate_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "size",
                                                        "nodeType": "YulTypedName",
                                                        "src": "171:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "180:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "146:275:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "490:631:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "539:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "548:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "551:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "541:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "541:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "541:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "518:6:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "526:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "514:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "514:17:22"
                                                                            },
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "533:3:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "510:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "510:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "503:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "503:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "500:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "564:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "580:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "574:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "574:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "568:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "626:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "628:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "628:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "628:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "602:2:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "614:2:22",
                                                                                        "type": "",
                                                                                        "value": "64"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "618:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "610:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "610:10:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "622:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "606:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "606:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "599:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "599:26:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "596:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "657:14:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "667:4:22",
                                                                "type": "",
                                                                "value": "0x20"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "661:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "680:68:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "_1",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "723:2:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "727:4:22",
                                                                                                "type": "",
                                                                                                "value": "0x1f"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "719:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "719:13:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "738:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "734:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "734:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "715:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "715:27:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "744:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "711:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "711:36:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "695:15:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "695:53:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "array_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "684:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "array_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "764:7:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "773:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "757:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "757:19:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "757:19:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "822:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "831:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "834:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "824:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "824:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "824:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "offset",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "799:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_1",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "807:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "795:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "795:15:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "812:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "791:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "791:24:22"
                                                                    },
                                                                    {
                                                                        "name": "end",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "817:3:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "788:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "788:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "785:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "847:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "856:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "851:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "912:88:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "array_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "941:7:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "950:1:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "937:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "937:15:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "_2",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "954:2:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "933:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "933:24:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "arguments": [
                                                                                                        {
                                                                                                            "name": "offset",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "973:6:22"
                                                                                                        },
                                                                                                        {
                                                                                                            "name": "i",
                                                                                                            "nodeType": "YulIdentifier",
                                                                                                            "src": "981:1:22"
                                                                                                        }
                                                                                                    ],
                                                                                                    "functionName": {
                                                                                                        "name": "add",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "969:3:22"
                                                                                                    },
                                                                                                    "nodeType": "YulFunctionCall",
                                                                                                    "src": "969:14:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_2",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "985:2:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "965:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "965:23:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "959:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "959:30:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "926:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "926:64:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "926:64:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "877:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "880:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "874:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "874:9:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "884:19:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "886:15:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "895:1:22"
                                                                                },
                                                                                {
                                                                                    "name": "_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "898:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "891:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "891:10:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "886:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "870:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "866:134:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1030:60:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "array_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1059:7:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "_1",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1068:2:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1055:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "1055:16:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "_2",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1073:2:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1051:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "1051:25:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1078:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1044:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1044:36:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1044:36:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1015:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1018:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1012:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1012:9:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1009:81:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1099:16:22",
                                                            "value": {
                                                                "name": "array_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1108:7:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "array",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1099:5:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_string_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "464:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "472:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "array",
                                                        "nodeType": "YulTypedName",
                                                        "src": "480:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "426:695:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1186:117:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1196:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1211:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1205:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1205:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1196:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1281:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1290:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1293:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1283:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1283:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1283:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1240:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1251:5:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1266:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1271:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1262:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1262:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1275:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1258:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1258:19:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1247:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1247:31:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1237:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1237:42:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1230:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1230:50:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1227:70:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1165:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1176:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1126:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1367:116:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1377:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1392:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1386:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1386:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1377:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1461:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1470:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1473:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1463:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1463:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1463:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1421:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1432:5:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1447:2:22",
                                                                                                        "type": "",
                                                                                                        "value": "64"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1451:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1443:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1443:10:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1455:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1439:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1439:18:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1428:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1428:30:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1418:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1418:41:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1411:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1411:49:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1408:69:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1346:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1357:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1308:175:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1687:859:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1734:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1743:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1746:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1736:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1736:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1736:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1708:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1717:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1704:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1704:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1729:3:22",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1700:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1700:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1697:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1759:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1779:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1773:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1773:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1763:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1798:28:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1816:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1820:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1812:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1812:10:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1824:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1808:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1808:18:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1802:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1853:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1862:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1865:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1855:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1855:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1855:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1841:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1849:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1838:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1838:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1835:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1878:71:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1921:9:22"
                                                                            },
                                                                            {
                                                                                "name": "offset",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1932:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1917:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1917:22:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1941:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_string_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1888:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1888:61:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1878:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1958:41:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1984:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1995:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1980:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1980:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1974:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1974:25:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1962:8:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2028:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2037:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2040:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2030:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2030:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2030:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2014:8:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2024:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2011:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2011:16:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2008:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2053:73:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2096:9:22"
                                                                            },
                                                                            {
                                                                                "name": "offset_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2107:8:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2092:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2092:24:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2118:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_string_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2063:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2063:63:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2053:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2135:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2179:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2190:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2175:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2175:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2145:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2145:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2135:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2203:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2247:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2258:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2243:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2243:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2213:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2213:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value3",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2203:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2271:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2314:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2325:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2310:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2310:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2281:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2281:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value4",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2271:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2339:39:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2362:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2373:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2358:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2358:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2352:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2352:26:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2343:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2431:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2440:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2443:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2433:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2433:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2433:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2400:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "2421:5:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "2414:6:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "2414:13:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2407:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2407:21:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2397:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2397:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2390:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2390:40:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2387:60:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2456:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2466:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value5",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2456:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2480:60:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2524:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2535:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2520:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2520:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2490:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2490:50:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value6",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2480:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_addresst_uint64t_boolt_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1605:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1616:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1628:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1636:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1644:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1652:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1660:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1668:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1676:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1488:1058:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2725:177:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2742:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2753:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2735:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2735:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2735:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2776:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2787:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2772:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2772:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2792:2:22",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2765:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2765:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2765:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2815:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2826:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2811:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2811:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "426164204c5020746f6b656e206e616d65206f722073796d626f6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2831:29:22",
                                                                        "type": "",
                                                                        "value": "Bad LP token name or symbol"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2804:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2804:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2804:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2870:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2882:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2893:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2878:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2878:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2870:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_bbafc52390f55679de28d6789281f62ca2e8900a287d1789da1882ca242675c1__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2702:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2716:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2551:351:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3006:101:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3016:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3028:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3039:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3024:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3024:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3016:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3058:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3073:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3089:2:22",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3093:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3085:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3085:10:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3097:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3081:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3081:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3069:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3069:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3051:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3051:50:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3051:50:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2975:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2986:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2997:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2907:200:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3193:127:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3239:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3248:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3251:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3241:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3241:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3241:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3214:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3223:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3210:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3210:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3235:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3206:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3206:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3203:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3264:50:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3304:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_address_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3274:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3274:40:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3264:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3159:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3170:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3182:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3112:208:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3426:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3436:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3448:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3459:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3444:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3444:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3436:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3478:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3489:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3471:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3471:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3471:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3395:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3406:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3417:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3325:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3608:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3618:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3630:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3641:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3626:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3626:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3618:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3660:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3675:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3691:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3696:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3687:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3687:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3700:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3683:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3683:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3671:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3671:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3653:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3653:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3653:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3577:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3588:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3599:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3507:203:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3822:336:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3868:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3877:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3880:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3870:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3870:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3870:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3843:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3852:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3839:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3839:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3864:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3835:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3835:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3832:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3893:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3913:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3907:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3907:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3897:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3925:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3947:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3955:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3943:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3943:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3929:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4033:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4035:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4035:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4035:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3976:10:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "3996:2:22",
                                                                                                "type": "",
                                                                                                "value": "64"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "4000:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "3992:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "3992:10:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4004:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3988:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3988:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3973:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3973:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4012:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4024:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4009:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4009:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3970:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3970:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3967:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4071:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4075:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4064:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4064:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4064:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4102:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4116:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4110:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4110:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4095:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4095:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4095:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4136:16:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4146:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4136:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3788:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3799:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3811:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3715:443:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4243:126:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4289:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4298:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4301:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4291:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4291:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4291:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4264:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4273:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4260:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4260:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4285:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4256:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4256:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4253:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4314:49:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4353:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_uint64_fromMemory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4324:28:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4324:39:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4314:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4209:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4220:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4232:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4163:206:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4454:200:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4500:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4509:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4512:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4502:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4502:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4502:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4475:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4484:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4471:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4471:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4496:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4467:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4467:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4464:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4525:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4544:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4538:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4538:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4529:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4608:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4617:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4620:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4610:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4610:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4610:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4576:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4587:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4594:10:22",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4583:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4583:22:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4573:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4573:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4566:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4566:41:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4563:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4633:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4643:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4633:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4420:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4431:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4443:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4374:280:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4740:103:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4786:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4795:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4798:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4788:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4788:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4788:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4761:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4770:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4757:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4757:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4782:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4753:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4753:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4750:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4811:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4827:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4821:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4821:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4811:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4706:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4717:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4729:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4659:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5022:181:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5039:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5050:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5032:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5032:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5032:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5073:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5084:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5069:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5069:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5089:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5062:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5062:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5062:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5112:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5123:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5108:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5108:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5128:33:22",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5101:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5101:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5101:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5171:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5183:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5194:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5179:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5179:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5171:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4999:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5013:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4848:355:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5263:325:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5273:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5287:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5290:4:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5283:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5283:12:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5273:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5304:38:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5334:4:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5340:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5330:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5330:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5308:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5381:31:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "5383:27:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5397:6:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5405:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5393:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5393:17:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5383:6:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5361:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5354:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5354:26:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5351:61:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5471:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5492:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "5499:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "5504:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5495:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "5495:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5485:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5485:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5485:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5536:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5539:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5529:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5529:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5529:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5564:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5567:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5557:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5557:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5557:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5427:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5450:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5458:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5447:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5447:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5424:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5424:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5421:161:22"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5243:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5252:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5208:380:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        if gt(_1, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        let _2 := 0x20\n        let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), _2))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), _2), end) { revert(0, 0) }\n        let i := 0\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), 0)\n        }\n        array := array_1\n    }\n    function abi_decode_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_uint64_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(64, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptrt_addresst_addresst_uint64t_boolt_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n        value2 := abi_decode_address_fromMemory(add(headStart, 64))\n        value3 := abi_decode_address_fromMemory(add(headStart, 96))\n        value4 := abi_decode_uint64_fromMemory(add(headStart, 128))\n        let value := mload(add(headStart, 160))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value5 := value\n        value6 := abi_decode_address_fromMemory(add(headStart, 192))\n    }\n    function abi_encode_tuple_t_stringliteral_bbafc52390f55679de28d6789281f62ca2e8900a287d1789da1882ca242675c1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Bad LP token name or symbol\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\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_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 32)\n        if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, mload(headStart))\n        value0 := memPtr\n    }\n    function abi_decode_tuple_t_uint64_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_uint64_fromMemory(headStart)\n    }\n    function abi_decode_tuple_t_uint32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "linkReferences": {},
                            "object": "6080604052600a805461ff0019166101001790553480156200002057600080fd5b50604051620054b3380380620054b38339810160408190526200004391620008bc565b600080546001600160a01b0319166001600160a01b03831617905586518790879087908790879087908790879087906200008590600490602085019062000703565b5080516200009b90600590602084019062000703565b50506006805460ff1916600117905550865115801590620000bc5750855115155b6200010e5760405162461bcd60e51b815260206004820152601b60248201527f426164204c5020746f6b656e206e616d65206f722073796d626f6c000000000060448201526064015b60405180910390fd5b600e80546001600160a01b0319166001600160a01b038781169190911790915560068054610100600160a81b03191661010092871692909202919091179055620001554290565b600a805462010000600160701b0319166a010000000000000000000063ffffffff939093169290920262010000600160501b03191691909117620100006001600160401b038616021760ff1916831515179055620001b262000215565b620001bc6200049b565b600a54604051620100009091046001600160401b031681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a59060200160405180910390a1505050505050505050505050505062000a90565b6200021f620006af565b6200022f6006805460ff19169055565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b1580156200027557600080fd5b505afa1580156200028a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b0919062000989565b6040516302abf57960e61b81527f536b696e6e794f7074696d69737469634f7261636c650000000000000000000060048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156200031357600080fd5b505afa15801562000328573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034e919062000989565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e6919062000989565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b1580156200044657600080fd5b505afa1580156200045b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004819190620009ae565b51600b5550620004996006805460ff19166001179055565b565b620004a5620006af565b620004b56006805460ff19169055565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b1580156200050457600080fd5b505afa15801562000519573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200053f9190620009f3565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b158015620005b457600080fd5b505afa158015620005c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005ef919062000a11565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b1580156200065e57600080fd5b505afa15801562000673573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000699919062000a39565b601155620004996006805460ff19166001179055565b60065460ff16620004995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000105565b828054620007119062000a53565b90600052602060002090601f01602090048101928262000735576000855562000780565b82601f106200075057805160ff191683800117855562000780565b8280016001018555821562000780579182015b828111156200078057825182559160200191906001019062000763565b506200078e92915062000792565b5090565b5b808211156200078e576000815560010162000793565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620007ea57620007ea620007a9565b604052919050565b600082601f8301126200080457600080fd5b81516001600160401b03811115620008205762000820620007a9565b602062000836601f8301601f19168201620007bf565b82815285828487010111156200084b57600080fd5b60005b838110156200086b5785810183015182820184015282016200084e565b838111156200087d5760008385840101525b5095945050505050565b80516001600160a01b03811681146200089f57600080fd5b919050565b80516001600160401b03811681146200089f57600080fd5b600080600080600080600060e0888a031215620008d857600080fd5b87516001600160401b0380821115620008f057600080fd5b620008fe8b838c01620007f2565b985060208a01519150808211156200091557600080fd5b50620009248a828b01620007f2565b965050620009356040890162000887565b9450620009456060890162000887565b93506200095560808901620008a4565b925060a088015180151581146200096b57600080fd5b91506200097b60c0890162000887565b905092959891949750929550565b6000602082840312156200099c57600080fd5b620009a78262000887565b9392505050565b600060208284031215620009c157600080fd5b604051602081016001600160401b0381118282101715620009e657620009e6620007a9565b6040529151825250919050565b60006020828403121562000a0657600080fd5b620009a782620008a4565b60006020828403121562000a2457600080fd5b815163ffffffff81168114620009a757600080fd5b60006020828403121562000a4c57600080fd5b5051919050565b600181811c9082168062000a6857607f821691505b6020821081141562000a8a57634e487b7160e01b600052602260045260246000fd5b50919050565b614a138062000aa06000396000f3fe60806040526004361061031e5760003560e01c806370a08231116101ab578063b5351ee2116100f7578063cefed55f11610095578063df738fc81161006f578063df738fc814610978578063ed4de3a3146109a5578063f1d24bab146109da578063fff6cae9146109fe57600080fd5b8063cefed55f146108ee578063d412f5a41461090e578063dd62ed3e1461093257600080fd5b8063bec73ade116100d1578063bec73ade14610868578063c01e1bd614610888578063c73a32c3146108ad578063cc2c929e146108d457600080fd5b8063b5351ee21461081f578063bd6d894d14610834578063be0ba1221461084957600080fd5b8063975057e711610164578063a9059cbb1161013e578063a9059cbb14610793578063ac9650d8146107b3578063b2084202146107d3578063b454e326146107e957600080fd5b8063975057e714610733578063a457c2d714610753578063a6af2dfe1461077357600080fd5b806370a082311461067c578063753b91bb146106b25780637998a1c4146106d257806387a515d3146106e85780638f283970146106fe57806395d89b411461071e57600080fd5b806323b872dd1161026a5780633fa856c91161022357806351c6590a116101fd57806351c6590a1461061e5780635df45a371461063157806362822d341461064657806366db52401461066657600080fd5b80633fa856c9146105c85780634464fae4146105e85780634f52fd17146105fe57600080fd5b806323b872dd1461052457806327f224ca1461054457806329cb924d14610564578063313ce5671461057757806339509351146105935780633cc400b3146105b357600080fd5b8063173684c5116102d75780631bf71c38116102b15780631bf71c381461048c5780631c39c38d146104ac57806322302922146104e457806322f8e5661461050457600080fd5b8063173684c51461042957806318160ddd1461046257806319e9d8941461047757600080fd5b806306fdde031461032a57806308ed5b1414610355578063095ea7b31461037757806311cfc159146103a757806313111725146103e5578063135c404e1461040557600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a13565b60405161034c9190613d90565b60405180910390f35b34801561036157600080fd5b50610375610370366004613db1565b610aa5565b005b34801561038357600080fd5b50610397610392366004613dee565b610b44565b604051901515815260200161034c565b3480156103b357600080fd5b50600a546103cd906201000090046001600160401b031681565b6040516001600160401b03909116815260200161034c565b3480156103f157600080fd5b50610375610400366004613f53565b610b5b565b34801561041157600080fd5b5061041b600d5481565b60405190815260200161034c565b34801561043557600080fd5b50600a5461044d90600160b01b900463ffffffff1681565b60405163ffffffff909116815260200161034c565b34801561046e57600080fd5b5060035461041b565b34801561048357600080fd5b5061041b610e95565b34801561049857600080fd5b5061033f6104a7366004613f8d565b610ebe565b3480156104b857600080fd5b506000546104cc906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156104f057600080fd5b506010546104cc906001600160a01b031681565b34801561051057600080fd5b5061037561051f366004614044565b610ee1565b34801561053057600080fd5b5061039761053f36600461405d565b610f57565b34801561055057600080fd5b5061037561055f36600461409e565b611008565b34801561057057600080fd5b504261041b565b34801561058357600080fd5b506040516012815260200161034c565b34801561059f57600080fd5b506103976105ae366004613dee565b61109e565b3480156105bf57600080fd5b506103756110d5565b3480156105d457600080fd5b506103756105e3366004613f8d565b6112ca565b3480156105f457600080fd5b5061041b600c5481565b34801561060a57600080fd5b506103756106193660046140bb565b611727565b61037561062c366004614044565b6118a0565b34801561063d57600080fd5b5061041b611a44565b34801561065257600080fd5b5061041b610661366004614044565b611a5b565b34801561067257600080fd5b5061041b60085481565b34801561068857600080fd5b5061041b6106973660046140e0565b6001600160a01b031660009081526001602052604090205490565b3480156106be57600080fd5b506103756106cd366004613f53565b611a85565b3480156106de57600080fd5b5061041b60115481565b3480156106f457600080fd5b5061041b60095481565b34801561070a57600080fd5b506103756107193660046140e0565b611f21565b34801561072a57600080fd5b5061033f611fb0565b34801561073f57600080fd5b50600f546104cc906001600160a01b031681565b34801561075f57600080fd5b5061039761076e366004613dee565b611fbf565b34801561077f57600080fd5b50600e546104cc906001600160a01b031681565b34801561079f57600080fd5b506103976107ae366004613dee565b61205a565b6107c66107c13660046140fd565b612067565b60405161034c9190614171565b3480156107df57600080fd5b5061041b60075481565b3480156107f557600080fd5b506104cc610804366004614044565b6013602052600090815260409020546001600160a01b031681565b34801561082b57600080fd5b5061037561220c565b34801561084057600080fd5b5061041b612464565b34801561085557600080fd5b50600a5461039790610100900460ff1681565b34801561087457600080fd5b50610375610883366004613f8d565b61247e565b34801561089457600080fd5b506006546104cc9061010090046001600160a01b031681565b3480156108b957600080fd5b50600a546103cd90600160701b90046001600160401b031681565b3480156108e057600080fd5b50600a546103979060ff1681565b3480156108fa57600080fd5b50610375610909366004613f8d565b61266b565b34801561091a57600080fd5b5060065461044d90600160a81b900463ffffffff1681565b34801561093e57600080fd5b5061041b61094d3660046141d3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561098457600080fd5b5061041b610993366004614044565b60126020526000908152604090205481565b3480156109b157600080fd5b506109c56109c0366004614044565b612851565b6040805192835260208301919091520161034c565b3480156109e657600080fd5b50600a5461044d90600160501b900463ffffffff1681565b348015610a0a57600080fd5b50610375612888565b606060048054610a2290614201565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90614201565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b5050505050905090565b600e546001600160a01b03163314610ad85760405162461bcd60e51b8152600401610acf9061423c565b60405180910390fd5b610ae06128a8565b610ae86128fa565b600a80548215156101000261ff00199091161790556040517f1d492b98217ff50d005c548e0fa3a96dc38b2bafccaf5baedf42c112bd39fdfb90610b3190831515815260200190565b60405180910390a1610b41612906565b50565b6000610b51338484612915565b5060015b92915050565b600a54610100900460ff16610ba85760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610acf565b610bb06128a8565b610bb86128fa565b6703782dace9d900008260a001516001600160401b031611158015610bf257506703782dace9d900008260c001516001600160401b031611155b8015610c0f57506706f05b59d3b20000816001600160401b031611155b610c4a5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610acf565b6000610c5583612a3a565b60008181526012602052604090205490915015610cab5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610acf565b60004290506000610cbf8560800151612a7d565b905060006040518060e0016040528060016002811115610ce157610ce1614273565b815233602082015260068054604090920191600160a81b900463ffffffff16906015610d0c8361429f565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018463ffffffff168152602001838152602001600b548152509050610d6781612a9d565b600085815260126020526040812091909155610d838783612ab0565b90508660800151600954600754610d9a91906142c3565b1015610de45760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610acf565b6000600b5484610df491906142da565b9050876080015160096000828254610e0c91906142da565b9250508190555080600d6000828254610e2591906142da565b9091555050600654610e479061010090046001600160a01b0316333084612b04565b857fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be0898585604051610e7b939291906143fc565b60405180910390a2505050505050610e91612906565b5050565b6000610e9f6128a8565b610ea76128fa565b610eb16000612b75565b9050610ebb612906565b90565b6060610ec86128a8565b610eda610ed58484612ab0565b612c03565b9392505050565b6000546001600160a01b0316610ef657600080fd5b60005460405163117c72b360e11b8152600481018390526001600160a01b03909116906322f8e56690602401600060405180830381600087803b158015610f3c57600080fd5b505af1158015610f50573d6000803e3d6000fd5b5050505050565b6000610f64848484612c40565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610fe95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610acf565b610ffd8533610ff886856142c3565b612915565b506001949350505050565b600e546001600160a01b031633146110325760405162461bcd60e51b8152600401610acf9061423c565b61103a6128a8565b6110426128fa565b600a805469ffffffffffffffff00001916620100006001600160401b038481168202929092179283905560405192041681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a590602001610b31565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b51918590610ff89086906142da565b6110dd6128a8565b6110e56128fa565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b15801561113357600080fd5b505afa158015611147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116b9190614428565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b1580156111df57600080fd5b505afa1580156111f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112179190614445565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b15801561128557600080fd5b505afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190614462565b6011556112c8612906565b565b6112d26128a8565b6112da6128fa565b60006112e583612a3a565b90506112f18183612e18565b60018251600281111561130657611306614273565b146113455760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cd95d1d1b1959608a1b6044820152606401610acf565b6000600a60169054906101000a900463ffffffff168360800151611369919061447b565b9050428163ffffffff1611156113b65760405162461bcd60e51b8152602060048201526012602482015271139bdd081cd95d1d1b1958589b19481e595d60721b6044820152606401610acf565b82602001516001600160a01b0316336001600160a01b031614806113ea57506113e18161038461447b565b63ffffffff1642115b6114295760405162461bcd60e51b815260206004820152601060248201526f2737ba1039b637bb903932b630bcb2b960811b6044820152606401610acf565b6040805160e0810190915261149d90806002815260200185602001516001600160a01b03168152602001856040015163ffffffff16815260200185606001516001600160401b03168152602001856080015163ffffffff1681526020018560a0015181526020018560c00151815250612a9d565b60008381526012602052604081209190915560a085015160608501516114d0916114c6916144a3565b8660800151612ea5565b85608001516114df91906142c3565b905060006114ed8486612ecd565b600081815260136020526040902054600a549192506001600160a01b03169060ff16801561152257506001600160a01b038116155b1561153a57611535876040015184612ef8565b61156f565b61156f6001600160a01b038216611555578760400151611557565b815b60065461010090046001600160a01b03169085612fc1565b60006115838860a001518960800151612ea5565b905060008760a001518860c0015161159b91906142da565b60208901519091506001600160a01b03163314156115e35760208801516115de906115c683856142da565b60065461010090046001600160a01b03169190612fc1565b611621565b6020880151600654611605916101009091046001600160a01b03169083612fc1565b6006546116219061010090046001600160a01b03163384612fc1565b600061162d83876142da565b905089608001516009600082825461164591906142c3565b92505081905550806007600082825461165e91906142c3565b92505081905550806008600082825461167791906144c5565b9250508190555081600d600082825461169091906142c3565b9091555061169e9050612ff1565b6116b86116b38a606001518c60800151612ea5565b61302f565b336001600160a01b0316887fcfdda74fce9fedb259e0f0a1ab1550e19b338488ece64976a4639e7fce0293a78b6040516116f29190614506565b60405180910390a350505060009182525060136020526040902080546001600160a01b031916905550610e9191506129069050565b61172f6128a8565b6117376128fa565b8015806117465750600a5460ff165b6117825760405162461bcd60e51b815260206004820152600d60248201526c086c2dce840e6cadcc840cae8d609b1b6044820152606401610acf565b6000670de0b6b3a7640000611795613062565b61179f9085614514565b6117a99190614549565b9050806009546117b991906142da565b600754101561180a5760405162461bcd60e51b815260206004820152601e60248201527f5574696c697a6174696f6e20746f6f206869676820746f2072656d6f766500006044820152606401610acf565b61181433846130da565b806007600082825461182691906142c3565b909155505081156118405761183b3382612ef8565b61185c565b60065461185c9061010090046001600160a01b03163383612fc1565b604080518281526020810185905233917f0c54fc223ffd1a8f36652b5e83db4fff50f5ae151b11ceb56d5499b9f6e1fa18910160405180910390a250610e91612906565b6118a86128a8565b6118b06128fa565b600a5460ff1680156118c157508034145b806118ca575034155b6119165760405162461bcd60e51b815260206004820152601b60248201527f42616420616464206c6971756964697479204574682076616c756500000000006044820152606401610acf565b6000611920613062565b61193283670de0b6b3a7640000614514565b61193c9190614549565b90506119483382613229565b816007600082825461195a91906142da565b909155505034158015906119705750600a5460ff165b156119e357600660019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5050505050611a00565b600654611a009061010090046001600160a01b0316333085612b04565b604080518381526020810183905233917f0351f600ef1e31e5e13b4dc27bff4cbde3e9269f0ffc666629ae6cac573eb220910160405180910390a250610b41612906565b6000611a4e6128a8565b611a56613308565b905090565b6000611a656128a8565b611a6d6128fa565b611a7682612b75565b9050611a80612906565b919050565b600a54610100900460ff16611ad25760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610acf565b611ada6128a8565b611ae26128fa565b60004290506703782dace9d900008360a001516001600160401b031611158015611b2157506703782dace9d900008360c001516001600160401b031611155b8015611b3e57506706f05b59d3b20000826001600160401b031611155b611b795760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610acf565b6000611b8484612a3a565b60008181526012602052604090205490915015611bda5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610acf565b6000611be98560800151612a7d565b905060006040518060e0016040528060016002811115611c0b57611c0b614273565b815233602082015260068054604090920191600160a81b900463ffffffff16906015611c368361429f565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018563ffffffff168152602001838152602001600b5481525090506000611c948783612ab0565b9050611c9f82612a9d565b600085815260126020526040812091909155611cbb8584612ecd565b6000818152601360205260409020549091506001600160a01b031615611d1d5760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610acf565b8760800151600954600754611d3291906142c3565b1015611d7c5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610acf565b6000600b5485611d8c91906142da565b90506000611dc08a60c001518b60a001518760600151611dac91906144a3565b611db691906144a3565b8b60800151612ea5565b90506000818b60800151611dd491906142c3565b905082600d6000828254611de891906142da565b909155505060808b015160098054600090611e049084906142da565b9091555050600084815260136020526040902080546001600160a01b03191633908117909155611e529030611e3986856142da565b60065461010090046001600160a01b0316929190612b04565b600a5460ff1615611e7057611e6b8b6040015182612ef8565b611e92565b60408b0151600654611e92916101009091046001600160a01b03169083612fc1565b877fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be08c8888604051611ec6939291906143fc565b60405180910390a2336001600160a01b0316887ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b88604051611f089190614506565b60405180910390a3505050505050505050610e91612906565b600e546001600160a01b03163314611f4b5760405162461bcd60e51b8152600401610acf9061423c565b611f536128a8565b611f5b6128fa565b600e80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f485a12424bd0c2c66a131c2681cb6c743b9573af3ae5f3014ef6ce7f55ab01929101610b31565b606060058054610a2290614201565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156120415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610acf565b6120503385610ff886856142c3565b5060019392505050565b6000610b51338484612c40565b606034156120b75760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c756500000000006044820152606401610acf565b816001600160401b038111156120cf576120cf613e1a565b60405190808252806020026020018201604052801561210257816020015b60608152602001906001900390816120ed5790505b50905060005b8281101561220557600080308686858181106121265761212661456b565b90506020028101906121389190614581565b6040516121469291906145ce565b600060405180830381855af49150503d8060008114612181576040519150601f19603f3d011682016040523d82523d6000602084013e612186565b606091505b5091509150816121d25760448151101561219f57600080fd5b600481019050808060200190518101906121b991906145de565b60405162461bcd60e51b8152600401610acf9190613d90565b808484815181106121e5576121e561456b565b6020026020010181905250505080806121fd9061467f565b915050612108565b5092915050565b6122146128a8565b61221c6128fa565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b15801561226157600080fd5b505afa158015612275573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612299919061469a565b6040516302abf57960e61b815275536b696e6e794f7074696d69737469634f7261636c6560501b60048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156122f457600080fd5b505afa158015612308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232c919061469a565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b15801561238857600080fd5b505afa15801561239c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c0919061469a565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b15801561241f57600080fd5b505afa158015612433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245791906146b7565b51600b55506112c8612906565b600061246e6128a8565b6124766128fa565b610eb1613062565b6124866128a8565b61248e6128fa565b600061249983612a3a565b90506124a58183612e18565b60006124b18284612ecd565b9050600a60169054906101000a900463ffffffff1683608001516124d5919061447b565b63ffffffff16421080156124fb57506001835160028111156124f9576124f9614273565b145b801561251c57506000818152601360205260409020546001600160a01b0316155b6125625760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610acf565b600081815260136020526040812080546001600160a01b0319163317905560c085015160a086015160608601516125a7929161259d916144a3565b6114c691906144a3565b905060008186608001516125bb91906142c3565b600a5490915060ff16156125f9576006546125e69061010090046001600160a01b0316333084612b04565b6125f4866040015182612ef8565b61261d565b604086015160065461261d916101009091046001600160a01b031690339084612b04565b336001600160a01b0316847ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b876040516126579190614506565b60405180910390a350505050610e91612906565b6126736128a8565b61267b6128fa565b42600a54608083015161269b91600160b01b900463ffffffff169061447b565b63ffffffff16116126de5760405162461bcd60e51b815260206004820152600d60248201526c50617374206c6976656e65737360981b6044820152606401610acf565b6001815160028111156126f3576126f3614273565b146127315760405162461bcd60e51b815260206004820152600e60248201526d4e6f742064697370757461626c6560901b6044820152606401610acf565b600061273c83612a3a565b90506127488183612e18565b60006127548484612ab0565b905060006127798460200151338660a001518760c0015161277487612c03565b613378565b90508360a001518460c0015161278f91906142da565b600d60008282546127a091906142c3565b90915550506080850151600980546000906127bc9084906142c3565b9091555050600083815260126020526040812055801561281057336127e085612a9d565b60405185907f29751133c2d0a0ea7a9da312248b12ef10ac4c20f4e3ab5eebbb80d853b3836790600090a4612846565b3361281a85612a9d565b60405185907f14173c4d3bd95e34f5c8f78729323444c9272bd21051e70045b64ed48f65818390600090a45b505050610e91612906565b60008061285c6128a8565b6128646128fa565b61286e6000612b75565b61287784612b75565b91509150612883612906565b915091565b6128906128a8565b6128986128fa565b6128a061369d565b6112c8612906565b60065460ff166112c85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610acf565b6006805460ff19169055565b6006805460ff19166001179055565b6001600160a01b0383166129775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610acf565b6001600160a01b0382166129d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610acf565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654604051600091612a6091849161010090046001600160a01b0316906020016146f8565b604051602081830303815290604052805190602001209050919050565b600a54600090610b5590600160701b90046001600160401b031683612ea5565b600081604051602001612a609190614506565b60008282604001518360600151600660019054906101000a90046001600160a01b0316604051602001612ae69493929190614720565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612b6f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613760565b50505050565b6000612b7f61369d565b60008060085413612b91576000612b95565b6008545b905060008160095485612ba891906142da565b612bb291906142da565b9050600082600754612bc491906142da565b905080612bdd5750670de0b6b3a7640000949350505050565b80612bf083670de0b6b3a7640000614514565b612bfa9190614549565b95945050505050565b6060610b5560405180602001604052806000815250604051806040016040528060098152602001680e4cad8c2f290c2e6d60bb1b81525084613832565b6001600160a01b038316612ca45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acf565b6001600160a01b038216612d065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acf565b6001600160a01b03831660009081526001602052604090205481811015612d7e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610acf565b612d8882826142c3565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290612dbe9084906142da565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e0a91815260200190565b60405180910390a350505050565b612e2181612a9d565b60008381526012602052604090205414610e91576040805162461bcd60e51b81526020600482015260248101919091527f4861736865642072656c617920706172616d7320646f206e6f74206d6174636860448201527f206578697374696e672072656c6179206861736820666f72206465706f7369746064820152608401610acf565b6000670de0b6b3a7640000612ec3836001600160401b038616614514565b610eda9190614549565b6000828260600151604051602001612ae69291909182526001600160401b0316602082015260400190565b6001600160a01b0382163b15612f2457600654610e919061010090046001600160a01b03168383612fc1565b600654604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015612f6e57600080fd5b505af1158015612f82573d6000803e3d6000fd5b50506040516001600160a01b038516925083156108fc02915083906000818181858888f19350505050158015612fbc573d6000803e3d6000fd5b505050565b6040516001600160a01b038316602482015260448101829052612fbc90849063a9059cbb60e01b90606401612b38565b6000612ffb613308565b905080600c5461300b91906142c3565b600c5550600a805463ffffffff60501b1916600160501b4263ffffffff1602179055565b80600c600082825461304191906142da565b92505081905550806008600082825461305a91906144c5565b909155505050565b600061306d60035490565b61307e5750670de0b6b3a764000090565b613086612ff1565b61308e61369d565b6000600c546008546007546130a391906144c5565b6130ad9190614765565b90506130b860035490565b6130ca82670de0b6b3a7640000614514565b6130d49190614549565b91505090565b6001600160a01b03821661313a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610acf565b6001600160a01b038216600090815260016020526040902054818110156131ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610acf565b6131b882826142c3565b6001600160a01b038416600090815260016020526040812091909155600380548492906131e69084906142c3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612a2d565b6001600160a01b03821661327f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610acf565b806003600082825461329191906142da565b90915550506001600160a01b038216600090815260016020526040812080548392906132be9084906142da565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600a546000908190670de0b6b3a764000090600160501b900463ffffffff164261333291906142c3565b600a54600c54613351916201000090046001600160401b031690614514565b61335b9190614514565b6133659190614549565b9050600c548110611a8057600c546130d4565b60008061338585856142da565b6010546006549192506133aa9161010090046001600160a01b03908116911683613878565b6010546011546001600160a01b039091169063af355d1e904286600660019054906101000a90046001600160a01b031660008b600a60169054906101000a900463ffffffff168f670de0b6b3a76400006040518a63ffffffff1660e01b815260040161341e999897969594939291906147a4565b602060405180830381600087803b15801561343857600080fd5b505af1925050508015613468575060408051601f3d908101601f1916820190925261346591810190614462565b60015b6134b5576006546134889061010090046001600160a01b03168883612fc1565b6010546006546134ab916001600160a01b03610100909204821691166000613878565b6000915050612bfa565b818110156135105760006134c982846142c3565b6006549091506134e89061010090046001600160a01b03168a83612fc1565b60105460065461350b916001600160a01b03610100909204821691166000613878565b819250505b5060408051610160810182526001600160a01b03898116825260006020830181905260065461010090049091169282019290925260608101829052670de0b6b3a7640000608082015260a08101829052600a5460c0820190600160b01b900463ffffffff164261358091906142da565b81526000602082015260400161359688856142c3565b815260208101889052600a54600160b01b900463ffffffff9081166040909201919091526006549192506135df9161010090046001600160a01b031690339030908690612b0416565b601054600654613601916001600160a01b036101009092048216911684613878565b60105460115460405163139c641960e31b81526001600160a01b0390921691639ce320c89161363c914290899087908e90309060040161480f565b602060405180830381600087803b15801561365657600080fd5b505af115801561366a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368e9190614462565b50600198975050505050505050565b600d546006546040516370a0823160e01b81523060048201526000929161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156136ea57600080fd5b505afa1580156136fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137229190614462565b61372c91906142c3565b9050600754811115610b415760075461374590826142c3565b600860008282546137569190614765565b9091555050600755565b60006137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661399c9092919063ffffffff16565b805190915015612fbc57808060200190518101906137d39190614908565b612fbc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610acf565b6060600061384085856139b3565b9050848161384d856139f5565b60405160200161385f93929190614925565b6040516020818303038152906040529150509392505050565b8015806139015750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156138c757600080fd5b505afa1580156138db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ff9190614462565b155b61396c5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610acf565b6040516001600160a01b038316602482015260448101829052612fbc90849063095ea7b360e01b90606401612b38565b60606139ab8484600085613a35565b949350505050565b8151606090156139e457816040516020016139ce9190614968565b6040516020818303038152906040529050610b55565b816040516020016139ce919061499c565b6060613a04608083901c613b5d565b613a0d83613b5d565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b606082471015613a965760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610acf565b843b613ae45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610acf565b600080866001600160a01b03168587604051613b0091906149c1565b60006040518083038185875af1925050503d8060008114613b3d576040519150601f19603f3d011682016040523d82523d6000602084013e613b42565b606091505b5091509150613b52828286613cff565b979650505050505050565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f08080808080808080808080808080808080808080808080808080808080808081681613c8157613c81614533565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b60608315613d0e575081610eda565b825115613d1e5782518084602001fd5b8160405162461bcd60e51b8152600401610acf9190613d90565b60005b83811015613d53578181015183820152602001613d3b565b83811115612b6f5750506000910152565b60008151808452613d7c816020860160208601613d38565b601f01601f19169290920160200192915050565b602081526000610eda6020830184613d64565b8015158114610b4157600080fd5b600060208284031215613dc357600080fd5b8135610eda81613da3565b6001600160a01b0381168114610b4157600080fd5b8035611a8081613dce565b60008060408385031215613e0157600080fd5b8235613e0c81613dce565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613e5257613e52613e1a565b60405290565b6001600160401b0381168114610b4157600080fd5b8035611a8081613e58565b63ffffffff81168114610b4157600080fd5b8035611a8081613e78565b6000610100808385031215613ea957600080fd5b604051908101906001600160401b0382118183101715613ecb57613ecb613e1a565b816040528092508335815260208401359150613ee682613e58565b816020820152613ef860408501613de3565b6040820152613f0960608501613de3565b606082015260808401356080820152613f2460a08501613e6d565b60a0820152613f3560c08501613e6d565b60c0820152613f4660e08501613e8a565b60e0820152505092915050565b6000806101208385031215613f6757600080fd5b613f718484613e95565b9150610100830135613f8281613e58565b809150509250929050565b6000808284036101e0811215613fa257600080fd5b613fac8585613e95565b925060e060ff1982011215613fc057600080fd5b50613fc9613e30565b61010084013560038110613fdc57600080fd5b8152613feb6101208501613de3565b6020820152613ffd6101408501613e8a565b604082015261400f6101608501613e6d565b60608201526140216101808501613e8a565b60808201526101a084013560a08201526101c09093013560c08401525092909150565b60006020828403121561405657600080fd5b5035919050565b60008060006060848603121561407257600080fd5b833561407d81613dce565b9250602084013561408d81613dce565b929592945050506040919091013590565b6000602082840312156140b057600080fd5b8135610eda81613e58565b600080604083850312156140ce57600080fd5b823591506020830135613f8281613da3565b6000602082840312156140f257600080fd5b8135610eda81613dce565b6000806020838503121561411057600080fd5b82356001600160401b038082111561412757600080fd5b818501915085601f83011261413b57600080fd5b81358181111561414a57600080fd5b8660208260051b850101111561415f57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156141c657603f198886030184526141b4858351613d64565b94509285019290850190600101614198565b5092979650505050505050565b600080604083850312156141e657600080fd5b82356141f181613dce565b91506020830135613f8281613dce565b600181811c9082168061421557607f821691505b6020821081141561423657634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43616c6c6572206e6f74206272696467652061646d696e000000000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156142b9576142b9614289565b6001019392505050565b6000828210156142d5576142d5614289565b500390565b600082198211156142ed576142ed614289565b500190565b8051825260208101516001600160401b0380821660208501526040830151915060018060a01b03808316604086015280606085015116606086015250608083015160808501528060a08401511660a08501528060c08401511660c0850152505063ffffffff60e08201511660e08301525050565b80516003811061438657634e487b7160e01b600052602160045260246000fd5b82526020818101516001600160a01b031690830152604080820151906143b39084018263ffffffff169052565b5060608101516143ce60608401826001600160401b03169052565b5060808101516143e6608084018263ffffffff169052565b5060a0818101519083015260c090810151910152565b610200810161440b82866142f2565b614419610100830185614366565b826101e0830152949350505050565b60006020828403121561443a57600080fd5b8151610eda81613e58565b60006020828403121561445757600080fd5b8151610eda81613e78565b60006020828403121561447457600080fd5b5051919050565b600063ffffffff80831681851680830382111561449a5761449a614289565b01949350505050565b60006001600160401b0380831681851680830382111561449a5761449a614289565b600080821280156001600160ff1b03849003851316156144e7576144e7614289565b600160ff1b839003841281161561450057614500614289565b50500190565b60e08101610b558284614366565b600081600019048311821515161561452e5761452e614289565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261456657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261459857600080fd5b8301803591506001600160401b038211156145b257600080fd5b6020019150368190038213156145c757600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156145f057600080fd5b81516001600160401b038082111561460757600080fd5b818401915084601f83011261461b57600080fd5b81518181111561462d5761462d613e1a565b604051601f8201601f19908116603f0116810190838211818310171561465557614655613e1a565b8160405282815287602084870101111561466e57600080fd5b613b52836020830160208801613d38565b600060001982141561469357614693614289565b5060010190565b6000602082840312156146ac57600080fd5b8151610eda81613dce565b6000602082840312156146c957600080fd5b604051602081018181106001600160401b03821117156146eb576146eb613e1a565b6040529151825250919050565b610120810161470782856142f2565b6001600160a01b03929092166101009190910152919050565b610160810161472f82876142f2565b63ffffffff949094166101008201526001600160401b03929092166101208301526001600160a01b031661014090910152919050565b60008083128015600160ff1b85018412161561478357614783614289565b6001600160ff1b038401831381161561479e5761479e614289565b50500390565b60006101208b835263ffffffff808c1660208501528160408501526147cb8285018c613d64565b6001600160a01b039a8b166060860152608085019990995260a084019790975250509290931660c083015290931660e0840152610100909201919091529392505050565b600061020088835263ffffffff8816602084015280604084015261483581840188613d64565b91505061484e6060830186516001600160a01b03169052565b60208501516001600160a01b03811660808401525060408501516001600160a01b03811660a084015250606085015180151560c084015250608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015161016087015281890151610180870152808901516101a0870152505050506148f36101c08301856001600160a01b03169052565b6001600160a01b0383166101e0830152613b52565b60006020828403121561491a57600080fd5b8151610eda81613da3565b60008451614937818460208901613d38565b84519083019061494b818360208901613d38565b845191019061495e818360208801613d38565b0195945050505050565b600b60fa1b815260008251614984816001850160208701613d38565b601d60f91b6001939091019283015250600201919050565b600082516149ae818460208701613d38565b601d60f91b920191825250600101919050565b600082516149d3818460208701613d38565b919091019291505056fea2646970667358221220c4b31e1ef9e4af0fa1497d6ce4afbdaab6148e447ddff6e73ffbd5b0e4aa00c664736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA DUP1 SLOAD PUSH2 0xFF00 NOT AND PUSH2 0x100 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x54B3 CODESIZE SUB DUP1 PUSH3 0x54B3 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x43 SWAP2 PUSH3 0x8BC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND OR SWAP1 SSTORE DUP7 MLOAD DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH3 0x85 SWAP1 PUSH1 0x4 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x703 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x9B SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x703 JUMP JUMPDEST POP POP PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE POP DUP7 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH3 0xBC JUMPI POP DUP6 MLOAD ISZERO ISZERO JUMPDEST PUSH3 0x10E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x426164204C5020746F6B656E206E616D65206F722073796D626F6C0000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 DUP1 SLOAD PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT AND PUSH2 0x100 SWAP3 DUP8 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x155 TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH3 0x10000 PUSH1 0x1 PUSH1 0x70 SHL SUB NOT AND PUSH11 0x100000000000000000000 PUSH4 0xFFFFFFFF SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL PUSH3 0x10000 PUSH1 0x1 PUSH1 0x50 SHL SUB NOT AND SWAP2 SWAP1 SWAP2 OR PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND MUL OR PUSH1 0xFF NOT AND DUP4 ISZERO ISZERO OR SWAP1 SSTORE PUSH3 0x1B2 PUSH3 0x215 JUMP JUMPDEST PUSH3 0x1BC PUSH3 0x49B JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x40 MLOAD PUSH3 0x10000 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH32 0x958B6B3E25D854F9E658CD5610BD9D184123D203F58F95ADF261E0D7D0DD65A5 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP POP POP POP POP POP PUSH3 0xA90 JUMP JUMPDEST PUSH3 0x21F PUSH3 0x6AF JUMP JUMPDEST PUSH3 0x22F PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E68F213 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB9A3C84C SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x275 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x28A 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 PUSH3 0x2B0 SWAP2 SWAP1 PUSH3 0x989 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH32 0x536B696E6E794F7074696D69737469634F7261636C6500000000000000000000 PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x313 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x328 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 PUSH3 0x34E SWAP2 SWAP1 PUSH3 0x989 JUMP JUMPDEST PUSH1 0x10 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH5 0x53746F7265 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x3C0 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 PUSH3 0x3E6 SWAP2 SWAP1 PUSH3 0x989 JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5B97AADD PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 PUSH4 0x5B97AADD SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x446 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x45B 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 PUSH3 0x481 SWAP2 SWAP1 PUSH3 0x9AE JUMP JUMPDEST MLOAD PUSH1 0xB SSTORE POP PUSH3 0x499 PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST PUSH3 0x4A5 PUSH3 0x6AF JUMP JUMPDEST PUSH3 0x4B5 PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC73A32C3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x519 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 PUSH3 0x53F SWAP2 SWAP1 PUSH3 0x9F3 JUMP JUMPDEST PUSH1 0xA PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173684C5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x5C9 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 PUSH3 0x5EF SWAP2 SWAP1 PUSH3 0xA11 JUMP JUMPDEST PUSH1 0xA PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7998A1C4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x65E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x673 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 PUSH3 0x699 SWAP2 SWAP1 PUSH3 0xA39 JUMP JUMPDEST PUSH1 0x11 SSTORE PUSH3 0x499 PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH3 0x499 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH3 0x105 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH3 0x711 SWAP1 PUSH3 0xA53 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x735 JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x780 JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x750 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x780 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x780 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x780 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x763 JUMP JUMPDEST POP PUSH3 0x78E SWAP3 SWAP2 POP PUSH3 0x792 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x78E JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x793 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x7EA JUMPI PUSH3 0x7EA PUSH3 0x7A9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x804 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x820 JUMPI PUSH3 0x820 PUSH3 0x7A9 JUMP JUMPDEST PUSH1 0x20 PUSH3 0x836 PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH3 0x7BF JUMP JUMPDEST DUP3 DUP2 MSTORE DUP6 DUP3 DUP5 DUP8 ADD ADD GT ISZERO PUSH3 0x84B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x86B JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP3 DUP3 ADD DUP5 ADD MSTORE DUP3 ADD PUSH3 0x84E JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH3 0x87D JUMPI PUSH1 0x0 DUP4 DUP6 DUP5 ADD ADD MSTORE JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x89F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH3 0x8D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x8F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x8FE DUP12 DUP4 DUP13 ADD PUSH3 0x7F2 JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x924 DUP11 DUP3 DUP12 ADD PUSH3 0x7F2 JUMP JUMPDEST SWAP7 POP POP PUSH3 0x935 PUSH1 0x40 DUP10 ADD PUSH3 0x887 JUMP JUMPDEST SWAP5 POP PUSH3 0x945 PUSH1 0x60 DUP10 ADD PUSH3 0x887 JUMP JUMPDEST SWAP4 POP PUSH3 0x955 PUSH1 0x80 DUP10 ADD PUSH3 0x8A4 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x96B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 POP PUSH3 0x97B PUSH1 0xC0 DUP10 ADD PUSH3 0x887 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x99C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9A7 DUP3 PUSH3 0x887 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x9C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x9E6 JUMPI PUSH3 0x9E6 PUSH3 0x7A9 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x9A7 DUP3 PUSH3 0x8A4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH3 0x9A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0xA4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0xA68 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH3 0xA8A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x4A13 DUP1 PUSH3 0xAA0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x31E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0xB5351EE2 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xCEFED55F GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDF738FC8 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xDF738FC8 EQ PUSH2 0x978 JUMPI DUP1 PUSH4 0xED4DE3A3 EQ PUSH2 0x9A5 JUMPI DUP1 PUSH4 0xF1D24BAB EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCEFED55F EQ PUSH2 0x8EE JUMPI DUP1 PUSH4 0xD412F5A4 EQ PUSH2 0x90E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBEC73ADE GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xBEC73ADE EQ PUSH2 0x868 JUMPI DUP1 PUSH4 0xC01E1BD6 EQ PUSH2 0x888 JUMPI DUP1 PUSH4 0xC73A32C3 EQ PUSH2 0x8AD JUMPI DUP1 PUSH4 0xCC2C929E EQ PUSH2 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB5351EE2 EQ PUSH2 0x81F JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0x834 JUMPI DUP1 PUSH4 0xBE0BA122 EQ PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x975057E7 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x793 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0xB2084202 EQ PUSH2 0x7D3 JUMPI DUP1 PUSH4 0xB454E326 EQ PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x975057E7 EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x753 JUMPI DUP1 PUSH4 0xA6AF2DFE EQ PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0x753B91BB EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x7998A1C4 EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0x87A515D3 EQ PUSH2 0x6E8 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x6FE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x26A JUMPI DUP1 PUSH4 0x3FA856C9 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x51C6590A GT PUSH2 0x1FD JUMPI DUP1 PUSH4 0x51C6590A EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0x5DF45A37 EQ PUSH2 0x631 JUMPI DUP1 PUSH4 0x62822D34 EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0x66DB5240 EQ PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3FA856C9 EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0x4464FAE4 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0x4F52FD17 EQ PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x524 JUMPI DUP1 PUSH4 0x27F224CA EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x593 JUMPI DUP1 PUSH4 0x3CC400B3 EQ PUSH2 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x173684C5 GT PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x1BF71C38 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x1BF71C38 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x22302922 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x173684C5 EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x19E9D894 EQ PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x8ED5B14 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x11CFC159 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x13111725 EQ PUSH2 0x3E5 JUMPI DUP1 PUSH4 0x135C404E EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x325 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0xA13 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0x3D90 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x370 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DB1 JUMP JUMPDEST PUSH2 0xAA5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0xB44 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x3CD SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F53 JUMP JUMPDEST PUSH2 0xB5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3 SLOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0xE95 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0x4A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8D JUMP JUMPDEST PUSH2 0xEBE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x10 SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x51F CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x53F CALLDATASIZE PUSH1 0x4 PUSH2 0x405D JUMP JUMPDEST PUSH2 0xF57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x409E JUMP JUMPDEST PUSH2 0x1008 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP TIMESTAMP PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x5AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0x109E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x10D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x5E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8D JUMP JUMPDEST PUSH2 0x12CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x619 CALLDATASIZE PUSH1 0x4 PUSH2 0x40BB JUMP JUMPDEST PUSH2 0x1727 JUMP JUMPDEST PUSH2 0x375 PUSH2 0x62C CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH2 0x18A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x1A44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x661 CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH2 0x1A5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x688 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x697 CALLDATASIZE PUSH1 0x4 PUSH2 0x40E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x6CD CALLDATASIZE PUSH1 0x4 PUSH2 0x3F53 JUMP JUMPDEST PUSH2 0x1A85 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x719 CALLDATASIZE PUSH1 0x4 PUSH2 0x40E0 JUMP JUMPDEST PUSH2 0x1F21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0x1FB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x76E CALLDATASIZE PUSH1 0x4 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0x1FBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x77F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xE SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0x205A JUMP JUMPDEST PUSH2 0x7C6 PUSH2 0x7C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x40FD JUMP JUMPDEST PUSH2 0x2067 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0x4171 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4CC PUSH2 0x804 CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x220C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x2464 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x397 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x883 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8D JUMP JUMPDEST PUSH2 0x247E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x894 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x4CC SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x3CD SWAP1 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x397 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x909 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8D JUMP JUMPDEST PUSH2 0x266B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x94D CALLDATASIZE PUSH1 0x4 PUSH2 0x41D3 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 CALLVALUE DUP1 ISZERO PUSH2 0x984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x993 CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C5 PUSH2 0x9C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH2 0x2851 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0x50 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x2888 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0xA22 SWAP1 PUSH2 0x4201 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA4E SWAP1 PUSH2 0x4201 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA9B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA70 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA9B 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 0xA7E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAD8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACF SWAP1 PUSH2 0x423C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAE0 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0xAE8 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD DUP3 ISZERO ISZERO PUSH2 0x100 MUL PUSH2 0xFF00 NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x1D492B98217FF50D005C548E0FA3A96DC38B2BAFCCAF5BAEDF42C112BD39FDFB SWAP1 PUSH2 0xB31 SWAP1 DUP4 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xB41 PUSH2 0x2906 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB51 CALLER DUP5 DUP5 PUSH2 0x2915 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBA8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x14995B185E5CC8185C9948191A5CD8589B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0xBB0 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0xBB8 PUSH2 0x28FA JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP3 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0xBF2 JUMPI POP PUSH8 0x3782DACE9D90000 DUP3 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC0F JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0xC4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x496E76616C69642066656573 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC55 DUP4 PUSH2 0x2A3A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xCAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x50656E64696E672072656C617920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 TIMESTAMP SWAP1 POP PUSH1 0x0 PUSH2 0xCBF DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x2A7D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xCE1 JUMPI PUSH2 0xCE1 PUSH2 0x4273 JUMP JUMPDEST DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x15 PUSH2 0xD0C DUP4 PUSH2 0x429F JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB SLOAD DUP2 MSTORE POP SWAP1 POP PUSH2 0xD67 DUP2 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xD83 DUP8 DUP4 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH2 0xD9A SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST LT ISZERO PUSH2 0xDE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x496E73756666696369656E7420706F6F6C2062616C616E6365 PUSH1 0x38 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD DUP5 PUSH2 0xDF4 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE0C SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE25 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x6 SLOAD PUSH2 0xE47 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH2 0x2B04 JUMP JUMPDEST DUP6 PUSH32 0xA4CA36D112520CCED74325C72711F376FE4015665829D879BA21590CB8130BE0 DUP10 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xE7B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x43FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE9F PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0xEA7 PUSH2 0x28FA JUMP JUMPDEST PUSH2 0xEB1 PUSH1 0x0 PUSH2 0x2B75 JUMP JUMPDEST SWAP1 POP PUSH2 0xEBB PUSH2 0x2906 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEC8 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0xEDA PUSH2 0xED5 DUP5 DUP5 PUSH2 0x2AB0 JUMP JUMPDEST PUSH2 0x2C03 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x117C72B3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF50 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF64 DUP5 DUP5 DUP5 PUSH2 0x2C40 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 0xFE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6C6C6F77616E6365 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0xFFD DUP6 CALLER PUSH2 0xFF8 DUP7 DUP6 PUSH2 0x42C3 JUMP JUMPDEST PUSH2 0x2915 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1032 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACF SWAP1 PUSH2 0x423C JUMP JUMPDEST PUSH2 0x103A PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1042 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH10 0xFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND DUP2 MSTORE PUSH32 0x958B6B3E25D854F9E658CD5610BD9D184123D203F58F95ADF261E0D7D0DD65A5 SWAP1 PUSH1 0x20 ADD PUSH2 0xB31 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0xB51 SWAP2 DUP6 SWAP1 PUSH2 0xFF8 SWAP1 DUP7 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH2 0x10DD PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x10E5 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC73A32C3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1147 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 0x116B SWAP2 SWAP1 PUSH2 0x4428 JUMP JUMPDEST PUSH1 0xA PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173684C5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11F3 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 0x1217 SWAP2 SWAP1 PUSH2 0x4445 JUMP JUMPDEST PUSH1 0xA PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7998A1C4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1299 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 0x12BD SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST PUSH1 0x11 SSTORE PUSH2 0x12C8 PUSH2 0x2906 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12D2 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x12DA PUSH2 0x28FA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E5 DUP4 PUSH2 0x2A3A JUMP JUMPDEST SWAP1 POP PUSH2 0x12F1 DUP2 DUP4 PUSH2 0x2E18 JUMP JUMPDEST PUSH1 0x1 DUP3 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1306 JUMPI PUSH2 0x1306 PUSH2 0x4273 JUMP JUMPDEST EQ PUSH2 0x1345 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481CD95D1D1B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x1369 SWAP2 SWAP1 PUSH2 0x447B JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x13B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x139BDD081CD95D1D1B1958589B19481E595D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x13EA JUMPI POP PUSH2 0x13E1 DUP2 PUSH2 0x384 PUSH2 0x447B JUMP JUMPDEST PUSH4 0xFFFFFFFF AND TIMESTAMP GT JUMPDEST PUSH2 0x1429 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x2737BA1039B637BB903932B630BCB2B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x149D SWAP1 DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x14D0 SWAP2 PUSH2 0x14C6 SWAP2 PUSH2 0x44A3 JUMP JUMPDEST DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2EA5 JUMP JUMPDEST DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x14DF SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14ED DUP5 DUP7 PUSH2 0x2ECD JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xA SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1522 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x153A JUMPI PUSH2 0x1535 DUP8 PUSH1 0x40 ADD MLOAD DUP5 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x156F JUMP JUMPDEST PUSH2 0x156F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1555 JUMPI DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x1557 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1583 DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD PUSH2 0x2EA5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH1 0xA0 ADD MLOAD DUP9 PUSH1 0xC0 ADD MLOAD PUSH2 0x159B SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x15E3 JUMPI PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x15DE SWAP1 PUSH2 0x15C6 DUP4 DUP6 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x2FC1 JUMP JUMPDEST PUSH2 0x1621 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x1605 SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x1621 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP5 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x162D DUP4 DUP8 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x80 ADD MLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1645 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x165E SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1677 SWAP2 SWAP1 PUSH2 0x44C5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1690 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x169E SWAP1 POP PUSH2 0x2FF1 JUMP JUMPDEST PUSH2 0x16B8 PUSH2 0x16B3 DUP11 PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x2EA5 JUMP JUMPDEST PUSH2 0x302F JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH32 0xCFDDA74FCE9FEDB259E0F0A1AB1550E19B338488ECE64976A4639E7FCE0293A7 DUP12 PUSH1 0x40 MLOAD PUSH2 0x16F2 SWAP2 SWAP1 PUSH2 0x4506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE POP PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE POP PUSH2 0xE91 SWAP2 POP PUSH2 0x2906 SWAP1 POP JUMP JUMPDEST PUSH2 0x172F PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1737 PUSH2 0x28FA JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x1746 JUMPI POP PUSH1 0xA SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1782 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x86C2DCE840E6CADCC840CAE8D PUSH1 0x9B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1795 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0x179F SWAP1 DUP6 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x17A9 SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x9 SLOAD PUSH2 0x17B9 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x7 SLOAD LT ISZERO PUSH2 0x180A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5574696C697A6174696F6E20746F6F206869676820746F2072656D6F76650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x1814 CALLER DUP5 PUSH2 0x30DA JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1826 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 ISZERO PUSH2 0x1840 JUMPI PUSH2 0x183B CALLER DUP3 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x185C JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x185C SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH32 0xC54FC223FFD1A8F36652B5E83DB4FFF50F5AE151B11CEB56D5499B9F6E1FA18 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST PUSH2 0x18A8 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x18B0 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x18C1 JUMPI POP DUP1 CALLVALUE EQ JUMPDEST DUP1 PUSH2 0x18CA JUMPI POP CALLVALUE ISZERO JUMPDEST PUSH2 0x1916 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616420616464206C6971756964697479204574682076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1920 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0x1932 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x193C SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP1 POP PUSH2 0x1948 CALLER DUP3 PUSH2 0x3229 JUMP JUMPDEST DUP2 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x195A SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP CALLVALUE ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1970 JUMPI POP PUSH1 0xA SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x19E3 JUMPI PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 CALLVALUE 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 0x19C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1A00 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x1A00 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP6 PUSH2 0x2B04 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x351F600EF1E31E5E13B4DC27BFF4CBDE3E9269F0FFC666629AE6CAC573EB220 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xB41 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A4E PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1A56 PUSH2 0x3308 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A65 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1A6D PUSH2 0x28FA JUMP JUMPDEST PUSH2 0x1A76 DUP3 PUSH2 0x2B75 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A80 PUSH2 0x2906 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1AD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x14995B185E5CC8185C9948191A5CD8589B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x1ADA PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1AE2 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0x0 TIMESTAMP SWAP1 POP PUSH8 0x3782DACE9D90000 DUP4 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0x1B21 JUMPI POP PUSH8 0x3782DACE9D90000 DUP4 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1B3E JUMPI POP PUSH8 0x6F05B59D3B20000 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0x1B79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x496E76616C69642066656573 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B84 DUP5 PUSH2 0x2A3A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1BDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x50656E64696E672072656C617920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BE9 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x2A7D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1C0B JUMPI PUSH2 0x1C0B PUSH2 0x4273 JUMP JUMPDEST DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x15 PUSH2 0x1C36 DUP4 PUSH2 0x429F JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB SLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0x1C94 DUP8 DUP4 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C9F DUP3 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1CBB DUP6 DUP5 PUSH2 0x2ECD JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1D1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x52656C61792063616E6E6F74206265207370656420757 PUSH1 0x4C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH2 0x1D32 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST LT ISZERO PUSH2 0x1D7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x496E73756666696369656E7420706F6F6C2062616C616E6365 PUSH1 0x38 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD DUP6 PUSH2 0x1D8C SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1DC0 DUP11 PUSH1 0xC0 ADD MLOAD DUP12 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x1DAC SWAP2 SWAP1 PUSH2 0x44A3 JUMP JUMPDEST PUSH2 0x1DB6 SWAP2 SWAP1 PUSH2 0x44A3 JUMP JUMPDEST DUP12 PUSH1 0x80 ADD MLOAD PUSH2 0x2EA5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x80 ADD MLOAD PUSH2 0x1DD4 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1DE8 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1E04 SWAP1 DUP5 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x1E52 SWAP1 ADDRESS PUSH2 0x1E39 DUP7 DUP6 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x2B04 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1E70 JUMPI PUSH2 0x1E6B DUP12 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1E92 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x1E92 SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST DUP8 PUSH32 0xA4CA36D112520CCED74325C72711F376FE4015665829D879BA21590CB8130BE0 DUP13 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x1EC6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x43FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH32 0xF98CDDC88BC965917007822B05056CB92BC9DDF0F8BCC61678400CB78313BB4B DUP9 PUSH1 0x40 MLOAD PUSH2 0x1F08 SWAP2 SWAP1 PUSH2 0x4506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1F4B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACF SWAP1 PUSH2 0x423C JUMP JUMPDEST PUSH2 0x1F53 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1F5B PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x485A12424BD0C2C66A131C2681CB6C743B9573AF3AE5F3014EF6CE7F55AB0192 SWAP2 ADD PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD PUSH2 0xA22 SWAP1 PUSH2 0x4201 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x2041 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x2050 CALLER DUP6 PUSH2 0xFF8 DUP7 DUP6 PUSH2 0x42C3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB51 CALLER DUP5 DUP5 PUSH2 0x2C40 JUMP JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0x20B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20CF JUMPI PUSH2 0x20CF PUSH2 0x3E1A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2102 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x20ED JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2205 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x2126 JUMPI PUSH2 0x2126 PUSH2 0x456B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2138 SWAP2 SWAP1 PUSH2 0x4581 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2146 SWAP3 SWAP2 SWAP1 PUSH2 0x45CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2181 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 0x2186 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x21D2 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x219F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21B9 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACF SWAP2 SWAP1 PUSH2 0x3D90 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x21E5 JUMPI PUSH2 0x21E5 PUSH2 0x456B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x21FD SWAP1 PUSH2 0x467F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2108 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2214 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x221C PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E68F213 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB9A3C84C SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2275 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 0x2299 SWAP2 SWAP1 PUSH2 0x469A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH22 0x536B696E6E794F7074696D69737469634F7261636C65 PUSH1 0x50 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2308 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 0x232C SWAP2 SWAP1 PUSH2 0x469A JUMP JUMPDEST PUSH1 0x10 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH5 0x53746F7265 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x239C 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 0x23C0 SWAP2 SWAP1 PUSH2 0x469A JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5B97AADD PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 PUSH4 0x5B97AADD SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x241F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2433 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 0x2457 SWAP2 SWAP1 PUSH2 0x46B7 JUMP JUMPDEST MLOAD PUSH1 0xB SSTORE POP PUSH2 0x12C8 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x246E PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x2476 PUSH2 0x28FA JUMP JUMPDEST PUSH2 0xEB1 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0x2486 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x248E PUSH2 0x28FA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2499 DUP4 PUSH2 0x2A3A JUMP JUMPDEST SWAP1 POP PUSH2 0x24A5 DUP2 DUP4 PUSH2 0x2E18 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24B1 DUP3 DUP5 PUSH2 0x2ECD JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x24D5 SWAP2 SWAP1 PUSH2 0x447B JUMP JUMPDEST PUSH4 0xFFFFFFFF AND TIMESTAMP LT DUP1 ISZERO PUSH2 0x24FB JUMPI POP PUSH1 0x1 DUP4 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x24F9 JUMPI PUSH2 0x24F9 PUSH2 0x4273 JUMP JUMPDEST EQ JUMPDEST DUP1 ISZERO PUSH2 0x251C JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST PUSH2 0x2562 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x52656C61792063616E6E6F74206265207370656420757 PUSH1 0x4C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH2 0x25A7 SWAP3 SWAP2 PUSH2 0x259D SWAP2 PUSH2 0x44A3 JUMP JUMPDEST PUSH2 0x14C6 SWAP2 SWAP1 PUSH2 0x44A3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x25BB SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0xA SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0x25F9 JUMPI PUSH1 0x6 SLOAD PUSH2 0x25E6 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH2 0x2B04 JUMP JUMPDEST PUSH2 0x25F4 DUP7 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x261D JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x261D SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLER SWAP1 DUP5 PUSH2 0x2B04 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xF98CDDC88BC965917007822B05056CB92BC9DDF0F8BCC61678400CB78313BB4B DUP8 PUSH1 0x40 MLOAD PUSH2 0x2657 SWAP2 SWAP1 PUSH2 0x4506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST PUSH2 0x2673 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x267B PUSH2 0x28FA JUMP JUMPDEST TIMESTAMP PUSH1 0xA SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x269B SWAP2 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH2 0x447B JUMP JUMPDEST PUSH4 0xFFFFFFFF AND GT PUSH2 0x26DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x50617374206C6976656E657373 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x1 DUP2 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x26F3 JUMPI PUSH2 0x26F3 PUSH2 0x4273 JUMP JUMPDEST EQ PUSH2 0x2731 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x4E6F742064697370757461626C65 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x273C DUP4 PUSH2 0x2A3A JUMP JUMPDEST SWAP1 POP PUSH2 0x2748 DUP2 DUP4 PUSH2 0x2E18 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2754 DUP5 DUP5 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2779 DUP5 PUSH1 0x20 ADD MLOAD CALLER DUP7 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0xC0 ADD MLOAD PUSH2 0x2774 DUP8 PUSH2 0x2C03 JUMP JUMPDEST PUSH2 0x3378 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0xA0 ADD MLOAD DUP5 PUSH1 0xC0 ADD MLOAD PUSH2 0x278F SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x27A0 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x27BC SWAP1 DUP5 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE DUP1 ISZERO PUSH2 0x2810 JUMPI CALLER PUSH2 0x27E0 DUP6 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0x29751133C2D0A0EA7A9DA312248B12EF10AC4C20F4E3AB5EEBBB80D853B38367 SWAP1 PUSH1 0x0 SWAP1 LOG4 PUSH2 0x2846 JUMP JUMPDEST CALLER PUSH2 0x281A DUP6 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0x14173C4D3BD95E34F5C8F78729323444C9272BD21051E70045B64ED48F658183 SWAP1 PUSH1 0x0 SWAP1 LOG4 JUMPDEST POP POP POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x285C PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x2864 PUSH2 0x28FA JUMP JUMPDEST PUSH2 0x286E PUSH1 0x0 PUSH2 0x2B75 JUMP JUMPDEST PUSH2 0x2877 DUP5 PUSH2 0x2B75 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2883 PUSH2 0x2906 JUMP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x2890 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x2898 PUSH2 0x28FA JUMP JUMPDEST PUSH2 0x28A0 PUSH2 0x369D JUMP JUMPDEST PUSH2 0x12C8 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH2 0x12C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2977 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x29D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 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 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH2 0x2A60 SWAP2 DUP5 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD PUSH2 0x46F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB55 SWAP1 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP4 PUSH2 0x2EA5 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2A60 SWAP2 SWAP1 PUSH2 0x4506 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2AE6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x2B6F SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH1 0x84 ADD 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 0x3760 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B7F PUSH2 0x369D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD SGT PUSH2 0x2B91 JUMPI PUSH1 0x0 PUSH2 0x2B95 JUMP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x9 SLOAD DUP6 PUSH2 0x2BA8 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH2 0x2BB2 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x7 SLOAD PUSH2 0x2BC4 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2BDD JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x2BF0 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x2BFA SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB55 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH9 0xE4CAD8C2F290C2E6D PUSH1 0xBB SHL DUP2 MSTORE POP DUP5 PUSH2 0x3832 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2CA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2D06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF 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 0x2D7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x2D88 DUP3 DUP3 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x2DBE SWAP1 DUP5 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x2E0A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x2E21 DUP2 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0xE91 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x4861736865642072656C617920706172616D7320646F206E6F74206D61746368 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206578697374696E672072656C6179206861736820666F72206465706F736974 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2EC3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND PUSH2 0x4514 JUMP JUMPDEST PUSH2 0xEDA SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2AE6 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO PUSH2 0x2F24 JUMPI PUSH1 0x6 SLOAD PUSH2 0xE91 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND 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 0x2FBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x2FBC SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2B38 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FFB PUSH2 0x3308 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xC SLOAD PUSH2 0x300B SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0xC SSTORE POP PUSH1 0xA DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x50 SHL NOT AND PUSH1 0x1 PUSH1 0x50 SHL TIMESTAMP PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE JUMP JUMPDEST DUP1 PUSH1 0xC PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3041 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x305A SWAP2 SWAP1 PUSH2 0x44C5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x306D PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x307E JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST PUSH2 0x3086 PUSH2 0x2FF1 JUMP JUMPDEST PUSH2 0x308E PUSH2 0x369D JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0x30A3 SWAP2 SWAP1 PUSH2 0x44C5 JUMP JUMPDEST PUSH2 0x30AD SWAP2 SWAP1 PUSH2 0x4765 JUMP JUMPDEST SWAP1 POP PUSH2 0x30B8 PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x30CA DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x30D4 SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x313A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF 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 0x31AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x31B8 DUP3 DUP3 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x31E6 SWAP1 DUP5 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x327F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3291 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x32BE SWAP1 DUP5 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH1 0x1 PUSH1 0x50 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND TIMESTAMP PUSH2 0x3332 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xC SLOAD PUSH2 0x3351 SWAP2 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x335B SWAP2 SWAP1 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x3365 SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP1 POP PUSH1 0xC SLOAD DUP2 LT PUSH2 0x1A80 JUMPI PUSH1 0xC SLOAD PUSH2 0x30D4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3385 DUP6 DUP6 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD SWAP2 SWAP3 POP PUSH2 0x33AA SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 PUSH2 0x3878 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xAF355D1E SWAP1 TIMESTAMP DUP7 PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP12 PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP16 PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x341E SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47A4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3468 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3465 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4462 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x34B5 JUMPI PUSH1 0x6 SLOAD PUSH2 0x3488 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x34AB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND PUSH1 0x0 PUSH2 0x3878 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x2BFA JUMP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3510 JUMPI PUSH1 0x0 PUSH2 0x34C9 DUP3 DUP5 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH2 0x34E8 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x350B SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND PUSH1 0x0 PUSH2 0x3878 JUMP JUMPDEST DUP2 SWAP3 POP POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA SLOAD PUSH1 0xC0 DUP3 ADD SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND TIMESTAMP PUSH2 0x3580 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x3596 DUP9 DUP6 PUSH2 0x42C3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x6 SLOAD SWAP2 SWAP3 POP PUSH2 0x35DF SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH2 0x2B04 AND JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x3601 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND DUP5 PUSH2 0x3878 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD PUSH4 0x139C6419 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x9CE320C8 SWAP2 PUSH2 0x363C SWAP2 TIMESTAMP SWAP1 DUP10 SWAP1 DUP8 SWAP1 DUP15 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x480F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x366A 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 0x368E SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST POP PUSH1 0x1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x36FE 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 0x3722 SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST PUSH2 0x372C SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 SLOAD DUP2 GT ISZERO PUSH2 0xB41 JUMPI PUSH1 0x7 SLOAD PUSH2 0x3745 SWAP1 DUP3 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3756 SWAP2 SWAP1 PUSH2 0x4765 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B5 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x399C SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x2FBC JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x37D3 SWAP2 SWAP1 PUSH2 0x4908 JUMP JUMPDEST PUSH2 0x2FBC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3840 DUP6 DUP6 PUSH2 0x39B3 JUMP JUMPDEST SWAP1 POP DUP5 DUP2 PUSH2 0x384D DUP6 PUSH2 0x39F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x385F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4925 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x3901 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38DB 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 0x38FF SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x396C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x2FBC SWAP1 DUP5 SWAP1 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2B38 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x39AB DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x3A35 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x60 SWAP1 ISZERO PUSH2 0x39E4 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x39CE SWAP2 SWAP1 PUSH2 0x4968 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xB55 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x39CE SWAP2 SWAP1 PUSH2 0x499C JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3A04 PUSH1 0x80 DUP4 SWAP1 SHR PUSH2 0x3B5D JUMP JUMPDEST PUSH2 0x3A0D DUP4 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x3A96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x3AE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x3B00 SWAP2 SWAP1 PUSH2 0x49C1 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 0x3B3D 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 0x3B42 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3B52 DUP3 DUP3 DUP7 PUSH2 0x3CFF JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x0 SHR SWAP1 POP DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH9 0x10000000000000000 MUL DUP2 OR PUSH24 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH5 0x100000000 MUL DUP2 OR PUSH28 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF AND SWAP1 POP DUP1 PUSH3 0x10000 MUL DUP2 OR PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND SWAP1 POP DUP1 PUSH2 0x100 MUL DUP2 OR PUSH31 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF AND SWAP1 POP DUP1 PUSH1 0x10 MUL DUP2 OR PUSH32 0xF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F AND SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP3 PUSH32 0x808080808080808080808080808080808080808080808080808080808080808 AND DUP2 PUSH2 0x3C81 JUMPI PUSH2 0x3C81 PUSH2 0x4533 JUMP JUMPDEST DIV PUSH1 0x4 PUSH32 0x404040404040404040404040404040404040404040404040404040404040404 DUP5 AND DIV PUSH1 0x2 PUSH32 0x202020202020202020202020202020202020202020202020202020202020202 DUP6 AND DIV OR AND PUSH1 0x27 MUL SWAP1 SWAP2 ADD PUSH32 0x3030303030303030303030303030303030303030303030303030303030303030 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3D0E JUMPI POP DUP2 PUSH2 0xEDA JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3D1E 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 0xACF SWAP2 SWAP1 PUSH2 0x3D90 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D53 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D3B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2B6F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3D7C DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3D38 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xEDA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3D64 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEDA DUP2 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1A80 DUP2 PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3E0C DUP2 PUSH2 0x3DCE JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3E52 JUMPI PUSH2 0x3E52 PUSH2 0x3E1A JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1A80 DUP2 PUSH2 0x3E58 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1A80 DUP2 PUSH2 0x3E78 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3ECB JUMPI PUSH2 0x3ECB PUSH2 0x3E1A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP3 POP DUP4 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3EE6 DUP3 PUSH2 0x3E58 JUMP JUMPDEST DUP2 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3EF8 PUSH1 0x40 DUP6 ADD PUSH2 0x3DE3 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3F09 PUSH1 0x60 DUP6 ADD PUSH2 0x3DE3 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3F24 PUSH1 0xA0 DUP6 ADD PUSH2 0x3E6D JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x3F35 PUSH1 0xC0 DUP6 ADD PUSH2 0x3E6D JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x3F46 PUSH1 0xE0 DUP6 ADD PUSH2 0x3E8A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x120 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F71 DUP5 DUP5 PUSH2 0x3E95 JUMP JUMPDEST SWAP2 POP PUSH2 0x100 DUP4 ADD CALLDATALOAD PUSH2 0x3F82 DUP2 PUSH2 0x3E58 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x1E0 DUP2 SLT ISZERO PUSH2 0x3FA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FAC DUP6 DUP6 PUSH2 0x3E95 JUMP JUMPDEST SWAP3 POP PUSH1 0xE0 PUSH1 0xFF NOT DUP3 ADD SLT ISZERO PUSH2 0x3FC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC9 PUSH2 0x3E30 JUMP JUMPDEST PUSH2 0x100 DUP5 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x3FDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MSTORE PUSH2 0x3FEB PUSH2 0x120 DUP6 ADD PUSH2 0x3DE3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3FFD PUSH2 0x140 DUP6 ADD PUSH2 0x3E8A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x400F PUSH2 0x160 DUP6 ADD PUSH2 0x3E6D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4021 PUSH2 0x180 DUP6 ADD PUSH2 0x3E8A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1A0 DUP5 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1C0 SWAP1 SWAP4 ADD CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE POP SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4056 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4072 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x407D DUP2 PUSH2 0x3DCE JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x408D DUP2 PUSH2 0x3DCE JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEDA DUP2 PUSH2 0x3E58 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3F82 DUP2 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEDA DUP2 PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x413B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x414A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x415F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x41C6 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x41B4 DUP6 DUP4 MLOAD PUSH2 0x3D64 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4198 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x41F1 DUP2 PUSH2 0x3DCE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3F82 DUP2 PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4215 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x4236 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x17 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616C6C6572206E6F74206272696467652061646D696E000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 EQ ISZERO PUSH2 0x42B9 JUMPI PUSH2 0x42B9 PUSH2 0x4289 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x42D5 JUMPI PUSH2 0x42D5 PUSH2 0x4289 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x42ED JUMPI PUSH2 0x42ED PUSH2 0x4289 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x60 DUP6 ADD MLOAD AND PUSH1 0x60 DUP7 ADD MSTORE POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE DUP1 PUSH1 0xA0 DUP5 ADD MLOAD AND PUSH1 0xA0 DUP6 ADD MSTORE DUP1 PUSH1 0xC0 DUP5 ADD MLOAD AND PUSH1 0xC0 DUP6 ADD MSTORE POP POP PUSH4 0xFFFFFFFF PUSH1 0xE0 DUP3 ADD MLOAD AND PUSH1 0xE0 DUP4 ADD MSTORE POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x4386 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 PUSH2 0x43B3 SWAP1 DUP5 ADD DUP3 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x43CE PUSH1 0x60 DUP5 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x43E6 PUSH1 0x80 DUP5 ADD DUP3 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0xA0 DUP2 DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x200 DUP2 ADD PUSH2 0x440B DUP3 DUP7 PUSH2 0x42F2 JUMP JUMPDEST PUSH2 0x4419 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4366 JUMP JUMPDEST DUP3 PUSH2 0x1E0 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x443A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEDA DUP2 PUSH2 0x3E58 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEDA DUP2 PUSH2 0x3E78 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x449A JUMPI PUSH2 0x449A PUSH2 0x4289 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x449A JUMPI PUSH2 0x449A PUSH2 0x4289 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT DUP1 ISZERO PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 SWAP1 SUB DUP6 SGT AND ISZERO PUSH2 0x44E7 JUMPI PUSH2 0x44E7 PUSH2 0x4289 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL DUP4 SWAP1 SUB DUP5 SLT DUP2 AND ISZERO PUSH2 0x4500 JUMPI PUSH2 0x4500 PUSH2 0x4289 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0xB55 DUP3 DUP5 PUSH2 0x4366 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x452E JUMPI PUSH2 0x452E PUSH2 0x4289 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4566 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x45B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x45C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x461B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x462D JUMPI PUSH2 0x462D PUSH2 0x3E1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4655 JUMPI PUSH2 0x4655 PUSH2 0x3E1A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x466E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B52 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x3D38 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x4693 JUMPI PUSH2 0x4693 PUSH2 0x4289 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEDA DUP2 PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x46EB JUMPI PUSH2 0x46EB PUSH2 0x3E1A JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x4707 DUP3 DUP6 PUSH2 0x42F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160 DUP2 ADD PUSH2 0x472F DUP3 DUP8 PUSH2 0x42F2 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLT DUP1 ISZERO PUSH1 0x1 PUSH1 0xFF SHL DUP6 ADD DUP5 SLT AND ISZERO PUSH2 0x4783 JUMPI PUSH2 0x4783 PUSH2 0x4289 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 ADD DUP4 SGT DUP2 AND ISZERO PUSH2 0x479E JUMPI PUSH2 0x479E PUSH2 0x4289 JUMP JUMPDEST POP POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP12 DUP4 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP13 AND PUSH1 0x20 DUP6 ADD MSTORE DUP2 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x47CB DUP3 DUP6 ADD DUP13 PUSH2 0x3D64 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH1 0xA0 DUP5 ADD SWAP8 SWAP1 SWAP8 MSTORE POP POP SWAP3 SWAP1 SWAP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP4 AND PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x100 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x200 DUP9 DUP4 MSTORE PUSH4 0xFFFFFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x4835 DUP2 DUP5 ADD DUP9 PUSH2 0x3D64 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x484E PUSH1 0x60 DUP4 ADD DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE POP PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE POP PUSH1 0x60 DUP6 ADD MLOAD DUP1 ISZERO ISZERO PUSH1 0xC0 DUP5 ADD MSTORE POP PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH2 0x100 DUP2 DUP2 DUP6 ADD MSTORE PUSH1 0xC0 DUP8 ADD MLOAD SWAP2 POP PUSH2 0x120 DUP3 DUP2 DUP7 ADD MSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP3 POP PUSH2 0x140 DUP4 DUP2 DUP8 ADD MSTORE DUP3 DUP10 ADD MLOAD PUSH2 0x160 DUP8 ADD MSTORE DUP2 DUP10 ADD MLOAD PUSH2 0x180 DUP8 ADD MSTORE DUP1 DUP10 ADD MLOAD PUSH2 0x1A0 DUP8 ADD MSTORE POP POP POP POP PUSH2 0x48F3 PUSH2 0x1C0 DUP4 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x3B52 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x491A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEDA DUP2 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x4937 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3D38 JUMP JUMPDEST DUP5 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x494B DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x3D38 JUMP JUMPDEST DUP5 MLOAD SWAP2 ADD SWAP1 PUSH2 0x495E DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3D38 JUMP JUMPDEST ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0xFA SHL DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x4984 DUP2 PUSH1 0x1 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x3D38 JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL PUSH1 0x1 SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x2 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x49AE DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3D38 JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x49D3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3D38 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xB3 0x1E 0x1E 0xF9 0xE4 0xAF 0xF LOG1 0x49 PUSH30 0x6CE4AFBDAAB6148E447DDFF6E73FFBD5B0E4AA00C664736F6C6343000809 STOP CALLER ",
                            "sourceMap": "51505:507:14:-:0;;;2712:32;;;-1:-1:-1;;2712:32:14;;;;;51549:343;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;728:12:12;:28;;-1:-1:-1;;;;;;728:28:12;-1:-1:-1;;;;;728:28:12;;;;;1965:13:0;;;;51808:14:14;;51824:12;;51838:8;;51848:19;;51869:11;;728:28:12;;1965:13:0;;51808:14:14;;1965:13:0;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1988:17:0;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;874:11:10;:18;;-1:-1:-1;;874:18:10;888:4;874:18;;;-1:-1:-1;9194:26:14;;:31;;::::2;::::0;:68:::2;;-1:-1:-1::0;9229:28:14;;:33;::::2;9194:68;9186:108;;;::::0;-1:-1:-1;;;9186:108:14;;2753:2:22;9186:108:14::2;::::0;::::2;2735:21:22::0;2792:2;2772:18;;;2765:30;2831:29;2811:18;;;2804:57;2878:18;;9186:108:14::2;;;;;;;;;9304:11;:48:::0;;-1:-1:-1;;;;;;9304:48:14::2;-1:-1:-1::0;;;;;9304:48:14;;::::2;::::0;;;::::2;::::0;;;9362:7:::2;:26:::0;;-1:-1:-1;;;;;;9362:26:14::2;9304:48;9362:26:::0;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;9423:16:::2;51988:15:::0;;51898:112;9423:16:::2;9398:15;:42:::0;;-1:-1:-1;;;;;;9450:40:14;9398:42;::::2;::::0;;;::::2;::::0;;;::::2;-1:-1:-1::0;;;;;;9450:40:14;;;;;;-1:-1:-1;;;;;9450:40:14;::::2;;;-1:-1:-1::0;;9500:24:14::2;::::0;::::2;;;::::0;;9535::::2;:22;:24::i;:::-;9637:27;:25;:27::i;:::-;9777:18;::::0;9764:32:::2;::::0;9777:18;;;::::2;-1:-1:-1::0;;;;;9777:18:14::2;3051:50:22::0;;9764:32:14::2;::::0;3039:2:22;3024:18;9764:32:14::2;;;;;;;8889:914:::0;;;;;;;51549:343;;;;;;;51505:507;;35811:457;1317:19:10;:17;:19::i;:::-;1346:17;2445:11;:19;;-1:-1:-1;;2445:19:10;;;2335:136;1346:17;35918:11:14::1;::::0;:20:::1;::::0;;-1:-1:-1;;;35918:20:14;;;;35877:22:::1;::::0;-1:-1:-1;;;;;35918:11:14::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:11;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36013:72;::::0;-1:-1:-1;;;36013:72:14;;36045:39:::1;36013:72;::::0;::::1;3471:25:22::0;35877:62:14;;-1:-1:-1;;;;;;36013:31:14;::::1;::::0;::::1;::::0;3444:18:22;;36013:72:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35949:16;:146:::0;;-1:-1:-1;;;;;;35949:146:14::1;-1:-1:-1::0;;;;;35949:146:14;;::::1;;::::0;;36129:55:::1;::::0;-1:-1:-1;;;36129:55:14;;-1:-1:-1;;;36129:55:14::1;::::0;::::1;3471:25:22::0;36129:31:14;;::::1;::::0;::::1;::::0;3444:18:22;;36129:55:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36106:5;:79:::0;;-1:-1:-1;;;;;;36106:79:14::1;-1:-1:-1::0;;;;;36106:79:14;;::::1;::::0;;::::1;::::0;;;36243:7:::1;::::0;36213:39:::1;::::0;-1:-1:-1;;;36213:39:14;;36106:79:::1;36243:7:::0;;::::1;::::0;;::::1;36213:39;::::0;::::1;3653:51:22::0;36106:79:14;36213:21:::1;::::0;3626:18:22;;36213:39:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48:::0;36195:15:::1;:66:::0;-1:-1:-1;1384:20:10;2658:11;:18;;-1:-1:-1;;2658:18:10;2672:4;2658:18;;;2477:206;1384:20;35811:457:14:o;36723:245::-;1317:19:10;:17;:19::i;:::-;1346:17;2445:11;:19;;-1:-1:-1;;2445:19:10;;;2335:136;1346:17;36810:11:14::1;;;;;;;;;-1:-1:-1::0;;;;;36810:11:14::1;-1:-1:-1::0;;;;;36810:27:14::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36792:15;;:47;;;;;-1:-1:-1::0;;;;;36792:47:14::1;;;;;-1:-1:-1::0;;;;;36792:47:14::1;;;;;;36876:11;;;;;;;;;-1:-1:-1::0;;;;;36876:11:14::1;-1:-1:-1::0;;;;;36876:36:14::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36849:24;;:65;;;;;;;;;;;;;;;;;;36937:11;;;;;;;;;-1:-1:-1::0;;;;;36937:11:14::1;-1:-1:-1::0;;;;;36937:22:14::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36924:10;:37:::0;1384:20:10;2658:11;:18;;-1:-1:-1;;2658:18:10;2672:4;2658:18;;;2477:206;2143:186;2275:11;;;;2267:55;;;;-1:-1:-1;;;2267:55:10;;5050:2:22;2267:55:10;;;5032:21:22;5089:2;5069:18;;;5062:30;5128:33;5108:18;;;5101:61;5179:18;;2267:55:10;4848:355:22;51505:507:14;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;51505:507:14;;;-1:-1:-1;51505:507:14;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:127:22;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:275;217:2;211:9;282:2;263:13;;-1:-1:-1;;259:27:22;247:40;;-1:-1:-1;;;;;302:34:22;;338:22;;;299:62;296:88;;;364:18;;:::i;:::-;400:2;393:22;146:275;;-1:-1:-1;146:275:22:o;426:695::-;480:5;533:3;526:4;518:6;514:17;510:27;500:55;;551:1;548;541:12;500:55;574:13;;-1:-1:-1;;;;;599:26:22;;596:52;;;628:18;;:::i;:::-;667:4;695:53;738:2;719:13;;-1:-1:-1;;715:27:22;711:36;;695:53;:::i;:::-;773:2;764:7;757:19;817:3;812:2;807;799:6;795:15;791:24;788:33;785:53;;;834:1;831;824:12;785:53;856:1;866:134;880:2;877:1;874:9;866:134;;;969:14;;;965:23;;959:30;937:15;;;933:24;;926:64;891:10;;866:134;;;1018:2;1015:1;1012:9;1009:81;;;1078:1;1073:2;1068;1059:7;1055:16;1051:25;1044:36;1009:81;-1:-1:-1;1108:7:22;426:695;-1:-1:-1;;;;;426:695:22:o;1126:177::-;1205:13;;-1:-1:-1;;;;;1247:31:22;;1237:42;;1227:70;;1293:1;1290;1283:12;1227:70;1126:177;;;:::o;1308:175::-;1386:13;;-1:-1:-1;;;;;1428:30:22;;1418:41;;1408:69;;1473:1;1470;1463:12;1488:1058;1628:6;1636;1644;1652;1660;1668;1676;1729:3;1717:9;1708:7;1704:23;1700:33;1697:53;;;1746:1;1743;1736:12;1697:53;1773:16;;-1:-1:-1;;;;;1838:14:22;;;1835:34;;;1865:1;1862;1855:12;1835:34;1888:61;1941:7;1932:6;1921:9;1917:22;1888:61;:::i;:::-;1878:71;;1995:2;1984:9;1980:18;1974:25;1958:41;;2024:2;2014:8;2011:16;2008:36;;;2040:1;2037;2030:12;2008:36;;2063:63;2118:7;2107:8;2096:9;2092:24;2063:63;:::i;:::-;2053:73;;;2145:49;2190:2;2179:9;2175:18;2145:49;:::i;:::-;2135:59;;2213:49;2258:2;2247:9;2243:18;2213:49;:::i;:::-;2203:59;;2281:49;2325:3;2314:9;2310:19;2281:49;:::i;:::-;2271:59;;2373:3;2362:9;2358:19;2352:26;2421:5;2414:13;2407:21;2400:5;2397:32;2387:60;;2443:1;2440;2433:12;2387:60;2466:5;-1:-1:-1;2490:50:22;2535:3;2520:19;;2490:50;:::i;:::-;2480:60;;1488:1058;;;;;;;;;;:::o;3112:208::-;3182:6;3235:2;3223:9;3214:7;3210:23;3206:32;3203:52;;;3251:1;3248;3241:12;3203:52;3274:40;3304:9;3274:40;:::i;:::-;3264:50;3112:208;-1:-1:-1;;;3112:208:22:o;3715:443::-;3811:6;3864:2;3852:9;3843:7;3839:23;3835:32;3832:52;;;3880:1;3877;3870:12;3832:52;3913:2;3907:9;3955:2;3943:15;;-1:-1:-1;;;;;3973:34:22;;4009:22;;;3970:62;3967:88;;;4035:18;;:::i;:::-;4071:2;4064:22;4110:16;;4095:32;;-1:-1:-1;4102:6:22;3715:443;-1:-1:-1;3715:443:22:o;4163:206::-;4232:6;4285:2;4273:9;4264:7;4260:23;4256:32;4253:52;;;4301:1;4298;4291:12;4253:52;4324:39;4353:9;4324:39;:::i;4374:280::-;4443:6;4496:2;4484:9;4475:7;4471:23;4467:32;4464:52;;;4512:1;4509;4502:12;4464:52;4544:9;4538:16;4594:10;4587:5;4583:22;4576:5;4573:33;4563:61;;4620:1;4617;4610:12;4659:184;4729:6;4782:2;4770:9;4761:7;4757:23;4753:32;4750:52;;;4798:1;4795;4788:12;4750:52;-1:-1:-1;4821:16:22;;4659:184;-1:-1:-1;4659:184:22:o;5208:380::-;5287:1;5283:12;;;;5330;;;5351:61;;5405:4;5397:6;5393:17;5383:27;;5351:61;5458:2;5450:6;5447:14;5427:18;5424:38;5421:161;;;5504:10;5499:3;5495:20;5492:1;5485:31;5539:4;5536:1;5529:15;5567:4;5564:1;5557:15;5421:161;;5208:380;;;:::o;:::-;51505:507:14;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@_5949": {
                                    "entryPoint": null,
                                    "id": 5949,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_allocateLpFees_5665": {
                                    "entryPoint": 12335,
                                    "id": 5665,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@_approve_494": {
                                    "entryPoint": 10517,
                                    "id": 494,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_beforeTokenTransfer_505": {
                                    "entryPoint": null,
                                    "id": 505,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_burn_449": {
                                    "entryPoint": 12506,
                                    "id": 449,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_callOptionalReturn_832": {
                                    "entryPoint": 14176,
                                    "id": 832,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_exchangeRateCurrent_5498": {
                                    "entryPoint": 12386,
                                    "id": 5498,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_getAccumulatedFees_5625": {
                                    "entryPoint": 13064,
                                    "id": 5625,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_getAmountFromPct_5682": {
                                    "entryPoint": 11941,
                                    "id": 5682,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@_getDepositHash_5715": {
                                    "entryPoint": 10810,
                                    "id": 5715,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_getInstantRelayHash_5596": {
                                    "entryPoint": 11981,
                                    "id": 5596,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@_getProposerBond_5695": {
                                    "entryPoint": 10877,
                                    "id": 5695,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_getRelayAncillaryData_5513": {
                                    "entryPoint": 11267,
                                    "id": 5513,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_getRelayDataHash_5556": {
                                    "entryPoint": 10909,
                                    "id": 5556,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_getRelayHash_5540": {
                                    "entryPoint": 10928,
                                    "id": 5540,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@_liquidityUtilizationPostRelay_5420": {
                                    "entryPoint": 11125,
                                    "id": 5420,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@_mint_387": {
                                    "entryPoint": 12841,
                                    "id": 387,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_msgSender_1140": {
                                    "entryPoint": null,
                                    "id": 1140,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@_postEntranceReset_3629": {
                                    "entryPoint": 10502,
                                    "id": 3629,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceCheck_3613": {
                                    "entryPoint": 10408,
                                    "id": 3613,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_preEntranceSet_3621": {
                                    "entryPoint": 10490,
                                    "id": 3621,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_requestProposeDispute_5905": {
                                    "entryPoint": 13176,
                                    "id": 5905,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "@_sync_5454": {
                                    "entryPoint": 13981,
                                    "id": 5454,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_transfer_340": {
                                    "entryPoint": 11328,
                                    "id": 340,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@_unwrapWETHTo_5945": {
                                    "entryPoint": 12024,
                                    "id": 5945,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_updateAccumulatedLpFees_5648": {
                                    "entryPoint": 12273,
                                    "id": 5648,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@_validateRelayDataHash_5576": {
                                    "entryPoint": 11800,
                                    "id": 5576,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@_verifyCallResult_1128": {
                                    "entryPoint": 15615,
                                    "id": 1128,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@addLiquidity_4226": {
                                    "entryPoint": 6304,
                                    "id": 4226,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@allowance_137": {
                                    "entryPoint": null,
                                    "id": 137,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@appendKeyValueBytes32_1846": {
                                    "entryPoint": 14386,
                                    "id": 1846,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@approve_158": {
                                    "entryPoint": 2884,
                                    "id": 158,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@balanceOf_98": {
                                    "entryPoint": null,
                                    "id": 98,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@bonds_3904": {
                                    "entryPoint": null,
                                    "id": 3904,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@bridgeAdmin_3907": {
                                    "entryPoint": null,
                                    "id": 3907,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@changeAdmin_5296": {
                                    "entryPoint": 7969,
                                    "id": 5296,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@constructPrefix_1935": {
                                    "entryPoint": 14771,
                                    "id": 1935,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@decimals_74": {
                                    "entryPoint": null,
                                    "id": 74,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@decreaseAllowance_270": {
                                    "entryPoint": 8127,
                                    "id": 270,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@disputeRelay_4619": {
                                    "entryPoint": 9835,
                                    "id": 4619,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@exchangeRateCurrent_5151": {
                                    "entryPoint": 9316,
                                    "id": 5151,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@functionCallWithValue_994": {
                                    "entryPoint": 14901,
                                    "id": 994,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "@functionCall_924": {
                                    "entryPoint": 14748,
                                    "id": 924,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@getAccumulatedFees_5348": {
                                    "entryPoint": 6724,
                                    "id": 5348,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@getCurrentTime_5990": {
                                    "entryPoint": null,
                                    "id": 5990,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@getLiquidityUtilization_5200": {
                                    "entryPoint": 10321,
                                    "id": 5200,
                                    "parameterSlots": 1,
                                    "returnSlots": 2
                                },
                                "@getRelayAncillaryData_5370": {
                                    "entryPoint": 3774,
                                    "id": 5370,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@identifier_3915": {
                                    "entryPoint": null,
                                    "id": 3915,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@increaseAllowance_232": {
                                    "entryPoint": 4254,
                                    "id": 232,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@instantRelays_3960": {
                                    "entryPoint": null,
                                    "id": 3960,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@isContract_853": {
                                    "entryPoint": null,
                                    "id": 853,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@isWethPool_3887": {
                                    "entryPoint": null,
                                    "id": 3887,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@l1Token_3877": {
                                    "entryPoint": null,
                                    "id": 3877,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@lastLpFeeUpdate_3894": {
                                    "entryPoint": null,
                                    "id": 3894,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@liquidReserves_3881": {
                                    "entryPoint": null,
                                    "id": 3881,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@liquidityUtilizationCurrent_5164": {
                                    "entryPoint": 3733,
                                    "id": 5164,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@liquidityUtilizationPostRelay_5179": {
                                    "entryPoint": 6747,
                                    "id": 5179,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@lpFeeRatePerSecond_3892": {
                                    "entryPoint": null,
                                    "id": 3892,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@multicall_3716": {
                                    "entryPoint": 8295,
                                    "id": 3716,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@name_54": {
                                    "entryPoint": 2579,
                                    "id": 54,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@numberOfRelays_3879": {
                                    "entryPoint": null,
                                    "id": 3879,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@optimisticOracleLiveness_3898": {
                                    "entryPoint": null,
                                    "id": 3898,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@optimisticOracle_3913": {
                                    "entryPoint": null,
                                    "id": 3913,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@pendingReserves_3885": {
                                    "entryPoint": null,
                                    "id": 3885,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@proposerBondPct_3896": {
                                    "entryPoint": null,
                                    "id": 3896,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@relayAndSpeedUp_4514": {
                                    "entryPoint": 6789,
                                    "id": 4514,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@relayDeposit_4758": {
                                    "entryPoint": 2907,
                                    "id": 4758,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@relaysEnabled_3890": {
                                    "entryPoint": null,
                                    "id": 3890,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@relays_3956": {
                                    "entryPoint": null,
                                    "id": 3956,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@removeLiquidity_4301": {
                                    "entryPoint": 5927,
                                    "id": 4301,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@safeApprove_710": {
                                    "entryPoint": 14456,
                                    "id": 710,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@safeTransferFrom_666": {
                                    "entryPoint": 11012,
                                    "id": 666,
                                    "parameterSlots": 4,
                                    "returnSlots": 0
                                },
                                "@safeTransfer_640": {
                                    "entryPoint": 12225,
                                    "id": 640,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "@setCurrentTime_3764": {
                                    "entryPoint": 3809,
                                    "id": 3764,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setLpFeeRatePerSecond_5316": {
                                    "entryPoint": 4104,
                                    "id": 5316,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@setRelaysEnabled_5336": {
                                    "entryPoint": 2725,
                                    "id": 5336,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "@settleRelay_5129": {
                                    "entryPoint": 4810,
                                    "id": 5129,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@speedUpRelay_4882": {
                                    "entryPoint": 9342,
                                    "id": 4882,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "@store_3910": {
                                    "entryPoint": null,
                                    "id": 3910,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@symbol_64": {
                                    "entryPoint": 8112,
                                    "id": 64,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@syncUmaEcosystemParams_5247": {
                                    "entryPoint": 8716,
                                    "id": 5247,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@syncWithBridgeAdminParams_5272": {
                                    "entryPoint": 4309,
                                    "id": 5272,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@sync_5139": {
                                    "entryPoint": 10376,
                                    "id": 5139,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@timerAddress_3723": {
                                    "entryPoint": null,
                                    "id": 3723,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@toUtf8Bytes32Bottom_1671": {
                                    "entryPoint": 15197,
                                    "id": 1671,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@toUtf8Bytes_1692": {
                                    "entryPoint": 14837,
                                    "id": 1692,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "@totalSupply_84": {
                                    "entryPoint": null,
                                    "id": 84,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "@transferFrom_205": {
                                    "entryPoint": 3927,
                                    "id": 205,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "@transfer_119": {
                                    "entryPoint": 8282,
                                    "id": 119,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "@undistributedLpFees_3902": {
                                    "entryPoint": null,
                                    "id": 3902,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@utilizedReserves_3883": {
                                    "entryPoint": null,
                                    "id": 3883,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_decode_address": {
                                    "entryPoint": 15843,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_struct_DepositData": {
                                    "entryPoint": 16021,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address": {
                                    "entryPoint": 16608,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_address_fromMemory": {
                                    "entryPoint": 18074,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_addresst_address": {
                                    "entryPoint": 16851,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_addresst_addresst_uint256": {
                                    "entryPoint": 16477,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 3
                                },
                                "abi_decode_tuple_t_addresst_uint256": {
                                    "entryPoint": 15854,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr": {
                                    "entryPoint": 16637,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_bool": {
                                    "entryPoint": 15793,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bool_fromMemory": {
                                    "entryPoint": 18696,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_bytes32_fromMemory": {
                                    "entryPoint": 17506,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_string_memory_ptr_fromMemory": {
                                    "entryPoint": 17886,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_struct$_RelayData_$3952_memory_ptr": {
                                    "entryPoint": 16269,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_uint64": {
                                    "entryPoint": 16211,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory": {
                                    "entryPoint": 18103,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256": {
                                    "entryPoint": 16452,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256_fromMemory": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint256t_bool": {
                                    "entryPoint": 16571,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "abi_decode_tuple_t_uint32_fromMemory": {
                                    "entryPoint": 17477,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64": {
                                    "entryPoint": 16542,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_tuple_t_uint64_fromMemory": {
                                    "entryPoint": 17448,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint32": {
                                    "entryPoint": 16010,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_decode_uint64": {
                                    "entryPoint": 15981,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_address": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_bool": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_string": {
                                    "entryPoint": 15716,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_struct_DepositData": {
                                    "entryPoint": 17138,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_struct_RelayData": {
                                    "entryPoint": 17254,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 17870,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 18881,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 18725,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 18844,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_packed_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_string_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                                    "entryPoint": 18792,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 16753,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_contract$_IERC20_$584_t_rational_0_by_1_t_uint256_t_uint32_t_address_t_int256__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_address_t_uint256_t_uint256_t_uint256_t_address_t_int256__fromStack_reversed": {
                                    "entryPoint": 18340,
                                    "id": null,
                                    "parameterSlots": 10,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__fromStack_reversed": {
                                    "entryPoint": 18447,
                                    "id": null,
                                    "parameterSlots": 7,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_BridgeAdminInterface_$6109__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_IERC20_$584__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_SkinnyOptimisticOracleInterface_$6650__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_contract$_StoreInterface_$6695__to_t_address__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 15760,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_014e645e7f8031a206f3b5a5e54294e512399b30b942040cdefea4c386ac4c2c__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_140eb91724df70a0cee818ba517cecd0d75a058e9680b55981a9187bd7c49aba__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_1b9adfacf0e3713528db5d163499daffed51d205d476d1216aa03b51e5246b78__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_21c11d76539f521406afa6465d19dbc68951b755ccb3b86b975cbdb7c85590e0__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_343ea3fc08d6a86d9bb33bff5b89a4880beb2877c0758a5b9d28acf6f4331668__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_4d52a6da38278ead32cd9f33eb5cd33c43ec96fe5ce1bd6e71fb70656b4cbf2e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 16956,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_6d85c5f14fef91ee2d1e97a9ebbeb17234c6f1697165e89e66564bef6d66742d__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_6e21cb62d00f42c575e706905a321dbe03b2d3e18c1a8cd6dde1b236d44f9cb5__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_88329e000212abe98d559877c824675fd701dbb3e66db634ca25c1b6e368a147__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_9c5c2898dfaf68f9d9f7da005f4e14e47b970b541fdaa53f62f755602f65f784__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c8ab8a2be779d9262c8a9592ba3da06668869724ea761c2b8bed96453f72b21e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_address__fromStack_reversed": {
                                    "entryPoint": 18168,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__to_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__fromStack_reversed": {
                                    "entryPoint": 17404,
                                    "id": null,
                                    "parameterSlots": 4,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__fromStack_reversed": {
                                    "entryPoint": 18208,
                                    "id": null,
                                    "parameterSlots": 5,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_struct$_RelayData_$3952_memory_ptr__to_t_struct$_RelayData_$3952_memory_ptr__fromStack_reversed": {
                                    "entryPoint": 17670,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "abi_encode_uint32": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "abi_encode_uint64": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 0
                                },
                                "access_calldata_tail_t_bytes_calldata_ptr": {
                                    "entryPoint": 17793,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 2
                                },
                                "allocate_memory": {
                                    "entryPoint": 15920,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 1
                                },
                                "checked_add_t_int256": {
                                    "entryPoint": 17605,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint256": {
                                    "entryPoint": 17114,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint32": {
                                    "entryPoint": 17531,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_add_t_uint64": {
                                    "entryPoint": 17571,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_div_t_uint256": {
                                    "entryPoint": 17737,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_mul_t_uint256": {
                                    "entryPoint": 17684,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_int256": {
                                    "entryPoint": 18277,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "checked_sub_t_uint256": {
                                    "entryPoint": 17091,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                },
                                "copy_memory_to_memory": {
                                    "entryPoint": 15672,
                                    "id": null,
                                    "parameterSlots": 3,
                                    "returnSlots": 0
                                },
                                "extract_byte_array_length": {
                                    "entryPoint": 16897,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint256": {
                                    "entryPoint": 18047,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "increment_t_uint32": {
                                    "entryPoint": 17055,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 1
                                },
                                "panic_error_0x11": {
                                    "entryPoint": 17033,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x12": {
                                    "entryPoint": 17715,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x21": {
                                    "entryPoint": 17011,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x32": {
                                    "entryPoint": 17771,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "panic_error_0x41": {
                                    "entryPoint": 15898,
                                    "id": null,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "validator_revert_address": {
                                    "entryPoint": 15822,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_bool": {
                                    "entryPoint": 15779,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_uint32": {
                                    "entryPoint": 15992,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                },
                                "validator_revert_uint64": {
                                    "entryPoint": 15960,
                                    "id": null,
                                    "parameterSlots": 1,
                                    "returnSlots": 0
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:39093:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "67:205:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "77:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "86:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "81:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "146:63:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "171:3:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "i",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "176:1:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "167:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "167:11:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "src",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "190:3:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "i",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "195:1:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "add",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "186:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "186:11:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "180:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "180:18:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "160:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "160:39:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "160:39:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "107:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "110:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "104:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "104:13:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "118:19:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "120:15:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "129:1:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "132:2:22",
                                                                                    "type": "",
                                                                                    "value": "32"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "125:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "125:10:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "120:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "100:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "96:113:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "235:31:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "dst",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "248:3:22"
                                                                                        },
                                                                                        {
                                                                                            "name": "length",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "253:6:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "244:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "244:16:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "262:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "237:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "237:27:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "237:27:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "224:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "227:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "221:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "221:13:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "218:48:22"
                                                        }
                                                    ]
                                                },
                                                "name": "copy_memory_to_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "src",
                                                        "nodeType": "YulTypedName",
                                                        "src": "45:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dst",
                                                        "nodeType": "YulTypedName",
                                                        "src": "50:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "55:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:258:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "327:208:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "337:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "357:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "351:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "351:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "341:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "379:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "384:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "372:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "372:19:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "372:19:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "426:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "433:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "422:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "422:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "444:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "449:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "440:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "440:14:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "456:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "400:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "400:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "400:63:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "472:57:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "487:3:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "500:6:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "508:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "496:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "496:15:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "517:2:22",
                                                                                                "type": "",
                                                                                                "value": "31"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "513:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "513:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "492:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "492:29:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "483:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "483:39:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "524:4:22",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "479:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "479:50:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "472:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_string",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "304:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "311:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "319:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "277:258:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "661:99:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "678:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "689:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "671:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "671:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "671:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "701:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "727:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "739:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "750:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "735:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "735:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "709:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "709:45:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "701:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "630:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "641:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "652:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "540:220:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "807:76:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "861:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "870:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "873:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "863:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "863:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "863:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "830:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "851:5:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "iszero",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "844:6:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "844:13:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "837:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "837:21:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "827:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "827:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "820:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "820:40:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "817:60:22"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "796:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "765:118:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "955:174:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1001:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1010:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1013:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1003:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1003:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1003:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "976:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "985:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "972:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "972:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "997:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "968:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "968:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "965:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1026:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1052:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1039:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1039:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1030:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1093:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1071:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1071:28:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1071:28:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1108:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1118:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1108:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "921:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "932:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "944:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "888:241:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1179:86:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1243:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1252:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1255:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1245:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1245:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1245:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1202:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1213:5:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1228:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "160"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "1233:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "1224:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "1224:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1237:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1220:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1220:19:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1209:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1209:31:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1199:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1199:42:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1192:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1192:50:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1189:70:22"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1168:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1134:131:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1319:85:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1329:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1351:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1338:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1338:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1329:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1392:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1367:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1367:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1367:31:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1298:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1309:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1270:134:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1496:228:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "1542:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1551:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "1554:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1544:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "1544:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "1544:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1517:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1526:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1513:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1513:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1538:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1509:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1509:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "1506:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "1567:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1593:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1580:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1580:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "1571:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1637:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1612:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1612:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1612:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1652:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "1662:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1652:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1676:42:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "1703:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "1714:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1699:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1699:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1686:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1686:32:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1676:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1454:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1465:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1477:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1485:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1409:315:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1770:50:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1787:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1806:5:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1799:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1799:13:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1792:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1792:21:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1780:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1780:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1780:34:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1754:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1761:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1729:91:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1920:92:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1930:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1942:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "1953:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1938:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1938:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1930:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1972:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value0",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "1997:6:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "1990:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "1990:14:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "1983:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "1983:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1965:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1965:41:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "1965:41:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1889:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1900:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "1911:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "1825:187:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2060:59:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2077:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2086:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2093:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2082:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2082:30:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2070:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2070:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2070:43:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2044:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2051:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2017:102:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2223:101:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2233:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2245:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2256:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2241:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2241:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2233:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2275:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2290:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2298:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2286:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2286:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2268:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2268:50:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2268:50:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2192:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2203:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2214:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2124:200:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2361:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2378:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2385:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2390:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2381:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2381:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2371:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2371:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2371:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2418:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2421:4:22",
                                                                        "type": "",
                                                                        "value": "0x41"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2411:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2411:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2411:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2442:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2445:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2435:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2435:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2435:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x41",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "2329:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2502:207:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2512:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2528:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2522:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2522:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2512:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "2540:35:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2562:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2570:4:22",
                                                                        "type": "",
                                                                        "value": "0xe0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2558:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2558:17:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "2544:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2650:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2652:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2652:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2652:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2593:10:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "2605:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2590:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2590:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2629:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2641:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2626:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2626:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2587:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2587:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2584:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "2688:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2692:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2681:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2681:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2681:22:22"
                                                        }
                                                    ]
                                                },
                                                "name": "allocate_memory",
                                                "nodeType": "YulFunctionDefinition",
                                                "returnVariables": [
                                                    {
                                                        "name": "memPtr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2491:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2461:248:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2758:85:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "2821:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2830:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "2833:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2823:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "2823:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "2823:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "2781:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "2792:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "2799:18:22",
                                                                                        "type": "",
                                                                                        "value": "0xffffffffffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "2788:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "2788:30:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "2778:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "2778:41:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2771:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2771:49:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "2768:69:22"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2747:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2714:129:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "2896:84:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "2906:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2928:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2915:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2915:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2906:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "2968:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "2944:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "2944:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "2944:30:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2875:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "2886:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2848:132:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3029:77:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3084:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3093:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3096:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3086:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3086:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3086:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3052:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3063:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3070:10:22",
                                                                                        "type": "",
                                                                                        "value": "0xffffffff"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "and",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3059:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3059:22:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "eq",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3049:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3049:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3042:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3042:41:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3039:61:22"
                                                        }
                                                    ]
                                                },
                                                "name": "validator_revert_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3018:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "2985:121:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3159:84:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3169:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3191:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3178:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3178:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3169:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3231:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint32",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3207:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3207:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3207:30:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "offset",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3138:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3149:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3111:132:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "3316:932:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3326:16:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "3336:6:22",
                                                                "type": "",
                                                                "value": "0x0100"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3330:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3383:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3392:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "3395:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3385:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3385:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3385:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "end",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3362:3:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3367:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3358:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3358:19:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3379:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3354:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3354:28:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3351:48:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3408:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3428:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3422:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3422:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3412:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3440:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3462:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3470:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3458:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3458:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3444:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "3548:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3550:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "3550:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "3550:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3491:10:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3503:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3488:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3488:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3527:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3539:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3524:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3524:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3485:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3485:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "3482:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "3586:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3590:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3579:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3579:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3579:22:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "3610:15:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3619:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3610:5:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3641:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3662:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3649:12:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3649:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3634:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3634:39:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3634:39:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3682:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3714:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3725:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3710:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3710:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3697:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3697:32:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "3686:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3762:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3738:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3738:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3738:32:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3790:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3798:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3786:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3786:15:22"
                                                                    },
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "3803:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3779:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3779:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3779:32:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3831:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3839:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3827:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3827:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3867:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3878:2:22",
                                                                                        "type": "",
                                                                                        "value": "64"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3863:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3863:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_address",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3844:18:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3844:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3820:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3820:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3820:63:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3903:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3911:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3899:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3899:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "3939:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "3950:2:22",
                                                                                        "type": "",
                                                                                        "value": "96"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "3935:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "3935:18:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_address",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3916:18:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3916:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3892:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3892:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3892:63:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "3975:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "3983:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3971:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3971:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4006:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4017:3:22",
                                                                                        "type": "",
                                                                                        "value": "128"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4002:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4002:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "3989:12:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "3989:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3964:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "3964:59:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "3964:59:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4043:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4051:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4039:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4039:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4079:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4090:3:22",
                                                                                        "type": "",
                                                                                        "value": "160"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4075:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4075:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint64",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4057:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4057:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4032:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4032:64:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4032:64:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4116:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4124:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4112:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4112:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4152:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4163:3:22",
                                                                                        "type": "",
                                                                                        "value": "192"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4148:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4148:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint64",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4130:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4130:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4105:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4105:64:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4105:64:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4189:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4197:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4185:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4185:16:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "4225:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "4236:3:22",
                                                                                        "type": "",
                                                                                        "value": "224"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4221:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4221:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint32",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4203:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4203:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4178:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4178:64:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4178:64:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_struct_DepositData",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3287:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3298:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "3306:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "3248:1000:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4368:255:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "4415:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4424:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "4427:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4417:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4417:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "4417:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4389:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4398:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4385:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4385:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4410:3:22",
                                                                        "type": "",
                                                                        "value": "288"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4381:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4381:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4378:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4440:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4480:9:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4491:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4450:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4450:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4440:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4508:46:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4538:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4549:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4534:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4534:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4521:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4521:33:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "4512:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4587:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4563:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4563:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4563:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4602:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4612:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4602:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4326:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4337:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4349:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4357:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4253:370:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4729:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "4739:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4751:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "4762:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4747:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4747:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4739:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4781:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4792:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4774:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4774:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4774:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4698:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4709:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4720:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4628:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "4853:51:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4870:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4879:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "4886:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "4875:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4875:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "4863:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "4863:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "4863:35:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4837:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4844:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4810:94:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5008:93:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5018:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5030:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5041:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5026:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5026:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5018:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5060:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5075:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5083:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5071:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5071:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5053:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5053:42:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5053:42:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4977:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4988:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "4999:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "4909:192:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "5249:837:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5259:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5273:7:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5282:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5269:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5269:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5263:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5317:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5326:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5329:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5319:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5319:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5319:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5308:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5312:3:22",
                                                                        "type": "",
                                                                        "value": "480"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5304:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5304:12:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5301:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "5342:59:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5382:9:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5393:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_decode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5352:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5352:49:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5342:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5442:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5451:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5454:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5444:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5444:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5444:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5421:2:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5429:3:22",
                                                                                        "type": "",
                                                                                        "value": "255"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "not",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5425:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5425:8:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5417:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5417:17:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "5436:4:22",
                                                                        "type": "",
                                                                        "value": "0xe0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5413:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5413:28:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5410:48:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5467:30:22",
                                                            "value": {
                                                                "arguments": [],
                                                                "functionName": {
                                                                    "name": "allocate_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5480:15:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5480:17:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5471:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "5506:48:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5538:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5549:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5534:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5534:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5521:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5521:33:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "5510:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "5589:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5598:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "5601:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5591:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5591:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "5591:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5576:7:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5585:1:22",
                                                                                "type": "",
                                                                                "value": "3"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5573:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5573:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5566:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5566:22:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "5563:42:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5621:5:22"
                                                                    },
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "5628:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5614:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5614:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5614:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5656:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5663:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5652:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5652:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5691:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5702:3:22",
                                                                                        "type": "",
                                                                                        "value": "288"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5687:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5687:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_address",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5668:18:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5668:39:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5645:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5645:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5645:63:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5728:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5735:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5724:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5724:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5762:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5773:3:22",
                                                                                        "type": "",
                                                                                        "value": "320"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5758:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5758:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint32",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5740:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5740:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5717:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5717:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5717:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5799:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5806:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5795:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5795:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5833:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5844:3:22",
                                                                                        "type": "",
                                                                                        "value": "352"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5829:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5829:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint64",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5811:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5811:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5788:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5788:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5788:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5870:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5877:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5866:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5866:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5905:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5916:3:22",
                                                                                        "type": "",
                                                                                        "value": "384"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5901:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5901:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "abi_decode_uint32",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5883:17:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5883:38:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5859:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5859:63:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5859:63:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5942:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "5949:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5938:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5938:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5972:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "5983:3:22",
                                                                                        "type": "",
                                                                                        "value": "416"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "5968:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5968:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "5955:12:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "5955:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5931:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5931:58:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5931:58:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6009:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6016:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6005:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6005:15:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "headStart",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "6039:9:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6050:3:22",
                                                                                        "type": "",
                                                                                        "value": "448"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6035:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6035:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "calldataload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6022:12:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6022:33:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "5998:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "5998:58:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "5998:58:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6065:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6075:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6065:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_struct$_RelayData_$3952_memory_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5207:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5218:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5230:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "5238:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "5106:980:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6210:99:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6227:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6238:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6220:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6220:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6220:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6250:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6276:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6288:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "6299:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6284:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6284:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6258:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6258:45:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6250:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6179:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6190:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6201:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6091:218:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6358:60:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6375:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6384:5:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6399:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6404:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6395:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6395:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6408:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6391:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6391:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6380:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6380:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6368:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6368:44:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6368:44:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6342:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6349:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6314:104:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6524:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6534:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6546:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6557:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6542:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6542:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6534:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6576:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6591:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6607:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6612:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6603:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6603:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6616:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6599:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6599:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6587:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6587:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6569:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6569:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6569:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6493:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6504:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6515:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6423:203:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6772:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "6782:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6794:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6805:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6790:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6790:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6782:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "6824:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6839:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6855:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "6860:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "6851:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "6851:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "6864:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "6847:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "6847:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6835:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6835:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6817:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6817:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "6817:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_SkinnyOptimisticOracleInterface_$6650__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6741:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6752:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6763:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6631:243:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "6949:110:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "6995:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7004:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7007:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6997:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "6997:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "6997:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6970:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "6979:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "6966:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6966:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6991:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6962:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "6962:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6959:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7020:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7043:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7030:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7030:23:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7020:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6915:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6926:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "6938:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "6879:180:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7168:352:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7214:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7223:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7226:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7216:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7216:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7216:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7189:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7198:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7185:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7185:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7210:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7181:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7181:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7178:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7239:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7265:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7252:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7252:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7243:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7309:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7284:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7284:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7284:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7324:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7334:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7324:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7348:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7380:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7391:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7376:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7376:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7363:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7363:32:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7352:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7429:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7404:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7404:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7404:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7446:17:22",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7456:7:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7446:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7472:42:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7499:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7510:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7495:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7495:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7482:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7482:32:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value2",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7472:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7118:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7129:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7141:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7149:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7157:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7064:456:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7594:176:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "7640:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7649:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "7652:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7642:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "7642:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "7642:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7615:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7624:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7611:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7611:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7636:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7607:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7607:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "7604:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "7665:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7691:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7678:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7678:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "7669:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7734:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7710:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7710:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7710:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7749:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "7759:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7749:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7560:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7571:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7583:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7525:245:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "7872:87:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "7882:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7894:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "7905:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7890:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7890:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7882:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "7924:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "7939:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "7947:4:22",
                                                                                "type": "",
                                                                                "value": "0xff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "7935:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "7935:17:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "7917:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "7917:36:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "7917:36:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7841:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7852:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "7863:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7775:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8048:225:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "8094:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8103:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8106:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8096:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8096:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8096:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8069:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8078:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8065:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8065:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8090:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8061:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8061:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "8058:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8119:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8142:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8129:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8129:23:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8119:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8161:45:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8191:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "8202:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8187:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8187:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8174:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8174:32:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8165:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8237:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8215:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8215:28:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8215:28:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8252:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8262:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8252:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256t_bool",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8006:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8017:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8029:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8037:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "7964:309:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8377:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8387:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8399:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8410:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8395:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8395:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8387:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8429:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8440:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8422:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8422:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8422:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8346:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8357:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8368:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8278:175:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8528:177:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "8574:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8583:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "8586:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8576:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "8576:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "8576:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8549:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "8558:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "8545:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "8545:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8570:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8541:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8541:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "8538:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "8599:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8625:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8612:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8612:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "8603:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8669:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8644:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8644:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8644:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8684:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "8694:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8684:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8494:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8505:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8517:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8458:247:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "8811:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "8821:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8833:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "8844:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8829:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8829:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8821:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8863:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "8874:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "8856:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "8856:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "8856:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8780:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8791:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8802:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8710:177:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9016:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9026:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9038:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9049:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9034:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9034:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9026:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9068:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9083:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9099:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9104:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "9095:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "9095:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "9108:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9091:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9091:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9079:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9079:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9061:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9061:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9061:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_StoreInterface_$6695__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8985:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "8996:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9007:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "8892:226:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9253:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9263:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9275:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9286:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9271:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9271:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9263:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9305:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9320:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9336:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9341:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "9332:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "9332:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "9345:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9328:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9328:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9316:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9316:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9298:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9298:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "9298:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_BridgeAdminInterface_$6109__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9222:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9233:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9244:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9123:232:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "9476:510:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9522:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9531:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9534:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9524:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9524:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9524:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9497:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9506:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9493:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9493:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9518:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9489:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9489:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9486:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9547:37:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9574:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9561:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9561:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9551:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9593:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "9603:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9597:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9648:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9657:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9660:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9650:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9650:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9650:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9636:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9644:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9633:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9633:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9630:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9673:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9687:9:22"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9698:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9683:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9683:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9677:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9753:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9762:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9765:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9755:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9755:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9755:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "9732:2:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "9736:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9728:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9728:13:22"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9743:7:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9724:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9724:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9717:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9717:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9714:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "9778:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9805:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9792:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9792:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "9782:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9835:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9844:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9847:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9837:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9837:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9837:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9823:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9831:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9820:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9820:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9817:34:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "9909:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9918:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "9921:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "9911:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "9911:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "9911:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "9874:2:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "9882:1:22",
                                                                                                "type": "",
                                                                                                "value": "5"
                                                                                            },
                                                                                            {
                                                                                                "name": "length",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "9885:6:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "9878:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "9878:14:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "9870:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "9870:23:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "9895:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "9866:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "9866:32:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9900:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9863:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9863:45:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "9860:65:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9934:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "9948:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "9952:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9944:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "9944:11:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9934:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "9964:16:22",
                                                            "value": {
                                                                "name": "length",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "9974:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "9964:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9434:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9445:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9457:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "9465:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9360:626:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10160:632:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10170:12:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10180:2:22",
                                                                "type": "",
                                                                "value": "32"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10174:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10191:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10209:9:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10220:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10205:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10205:18:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10195:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10239:9:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10250:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10232:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10232:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10232:21:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10262:17:22",
                                                            "value": {
                                                                "name": "tail_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10273:6:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10266:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10288:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10308:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10302:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10302:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10292:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "tail_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10331:6:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10339:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10324:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10324:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "10324:22:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10355:25:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10366:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10377:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10362:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10362:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "pos",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10355:3:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10389:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10411:9:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "10426:1:22",
                                                                                        "type": "",
                                                                                        "value": "5"
                                                                                    },
                                                                                    {
                                                                                        "name": "length",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10429:6:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "shl",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10422:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "10422:14:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10407:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10407:30:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10439:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10403:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10403:39:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "tail_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10393:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10451:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10469:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10477:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10465:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10465:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "srcPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10455:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "10489:10:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "10498:1:22",
                                                                "type": "",
                                                                "value": "0"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "i",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "10493:1:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10557:206:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10578:3:22"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "name": "tail_2",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "10591:6:22"
                                                                                                },
                                                                                                {
                                                                                                    "name": "headStart",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "10599:9:22"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "sub",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "10587:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "10587:22:22"
                                                                                        },
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "kind": "number",
                                                                                                    "nodeType": "YulLiteral",
                                                                                                    "src": "10615:2:22",
                                                                                                    "type": "",
                                                                                                    "value": "63"
                                                                                                }
                                                                                            ],
                                                                                            "functionName": {
                                                                                                "name": "not",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "10611:3:22"
                                                                                            },
                                                                                            "nodeType": "YulFunctionCall",
                                                                                            "src": "10611:7:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "add",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10583:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "10583:36:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10571:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10571:49:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "10571:49:22"
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10633:50:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "name": "srcPtr",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "10667:6:22"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "mload",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "10661:5:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "10661:13:22"
                                                                                },
                                                                                {
                                                                                    "name": "tail_2",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10676:6:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "abi_encode_string",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10643:17:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10643:40:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "tail_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10633:6:22"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10696:25:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "srcPtr",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10710:6:22"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10718:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10706:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10706:15:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "srcPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10696:6:22"
                                                                            }
                                                                        ]
                                                                    },
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10734:19:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "pos",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10745:3:22"
                                                                                },
                                                                                {
                                                                                    "name": "_1",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10750:2:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10741:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10741:12:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10734:3:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "i",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10519:1:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10522:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10516:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10516:13:22"
                                                            },
                                                            "nodeType": "YulForLoop",
                                                            "post": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10530:18:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "10532:14:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "i",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "10541:1:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10544:1:22",
                                                                                    "type": "",
                                                                                    "value": "1"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "add",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10537:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10537:9:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "i",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10532:1:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "pre": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10512:3:22",
                                                                "statements": []
                                                            },
                                                            "src": "10508:255:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10772:14:22",
                                                            "value": {
                                                                "name": "tail_2",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "10780:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10772:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10129:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10140:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10151:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "9991:801:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "10867:110:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "10913:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10922:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "10925:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10915:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "10915:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "10915:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10888:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "10897:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "10884:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "10884:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "10909:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10880:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10880:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "10877:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "10938:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "10961:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10948:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "10948:23:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "10938:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10833:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10844:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "10856:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10797:180:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11097:102:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11107:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11119:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11130:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11115:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11115:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11107:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11149:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11164:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "11180:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "11185:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "11176:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "11176:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "11189:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "11172:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "11172:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11160:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11160:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11142:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11142:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11142:51:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_contract$_IERC20_$584__to_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11066:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11077:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11088:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "10982:217:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11291:301:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "11337:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "11346:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "11349:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11339:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "11339:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "11339:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11312:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11321:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11308:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11308:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11333:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11304:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11304:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11301:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11362:36:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11388:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11375:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11375:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11366:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11432:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11407:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11407:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11407:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11447:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11457:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11447:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11471:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11503:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11514:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11499:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11499:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11486:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11486:32:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11475:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11552:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11527:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11527:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11527:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11569:17:22",
                                                            "value": {
                                                                "name": "value_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "11579:7:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value1",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11569:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_addresst_address",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11249:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11260:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11272:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11280:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11204:388:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11726:119:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11736:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11748:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11759:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11744:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11744:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11736:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11778:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11789:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11771:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11771:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11771:25:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "11816:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "11827:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "11812:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "11812:18:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11832:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11805:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11805:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "11805:34:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11687:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11698:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11706:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11717:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11597:248:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "11905:325:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "11915:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11929:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    },
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11932:4:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "shr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11925:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11925:12:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11915:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "11946:38:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "data",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "11976:4:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "11982:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11972:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11972:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "outOfPlaceEncoding",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "11950:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "12023:31:22",
                                                                "statements": [
                                                                    {
                                                                        "nodeType": "YulAssignment",
                                                                        "src": "12025:27:22",
                                                                        "value": {
                                                                            "arguments": [
                                                                                {
                                                                                    "name": "length",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "12039:6:22"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12047:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x7f"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "and",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12035:3:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12035:17:22"
                                                                        },
                                                                        "variableNames": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12025:6:22"
                                                                            }
                                                                        ]
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12003:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "11996:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "11996:26:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "11993:61:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "12113:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12134:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "12141:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "12146:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "12137:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "12137:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12127:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12127:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "12127:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12178:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12181:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12171:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12171:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "12171:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12206:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "12209:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12199:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "12199:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "12199:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "outOfPlaceEncoding",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12069:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12092:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12100:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12089:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12089:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12066:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12066:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "12063:161:22"
                                                        }
                                                    ]
                                                },
                                                "name": "extract_byte_array_length",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "data",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11885:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "11894:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "11850:380:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12409:173:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12426:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12437:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12419:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12419:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12419:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12460:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12471:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12456:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12456:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12476:2:22",
                                                                        "type": "",
                                                                        "value": "23"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12449:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12449:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12449:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12499:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12510:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12495:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12495:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "43616c6c6572206e6f74206272696467652061646d696e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12515:25:22",
                                                                        "type": "",
                                                                        "value": "Caller not bridge admin"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12488:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12488:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12488:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12550:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12562:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12573:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12558:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12558:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12550:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_4d52a6da38278ead32cd9f33eb5cd33c43ec96fe5ce1bd6e71fb70656b4cbf2e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12386:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12400:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12235:347:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "12761:169:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12778:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12789:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12771:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12771:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12771:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12812:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12823:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12808:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12808:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12828:2:22",
                                                                        "type": "",
                                                                        "value": "19"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12801:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12801:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12801:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "12851:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "12862:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "12847:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "12847:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "52656c617973206172652064697361626c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12867:21:22",
                                                                        "type": "",
                                                                        "value": "Relays are disabled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12840:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12840:49:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "12840:49:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "12898:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "12910:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "12921:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12906:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "12906:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "12898:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_88329e000212abe98d559877c824675fd701dbb3e66db634ca25c1b6e368a147__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12738:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "12752:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12587:343:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13109:162:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13126:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13137:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13119:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13119:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13119:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13160:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13171:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13156:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13156:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13176:2:22",
                                                                        "type": "",
                                                                        "value": "12"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13149:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13149:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13149:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13199:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13210:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13195:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13195:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "496e76616c69642066656573",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13215:14:22",
                                                                        "type": "",
                                                                        "value": "Invalid fees"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13188:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13188:42:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13188:42:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13239:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13251:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13262:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13247:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13247:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13239:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13086:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13100:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "12935:336:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13450:170:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13467:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13478:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13460:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13460:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13460:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13501:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13512:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13497:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13497:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13517:2:22",
                                                                        "type": "",
                                                                        "value": "20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13490:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13490:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13490:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "13540:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13551:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13536:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13536:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "50656e64696e672072656c617920657869737473",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13556:22:22",
                                                                        "type": "",
                                                                        "value": "Pending relay exists"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13529:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13529:50:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13529:50:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "13588:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13600:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13611:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13596:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13596:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13588:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13427:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13441:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13276:344:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13657:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13674:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13681:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13686:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13677:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13677:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13667:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13667:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13667:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13714:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13717:4:22",
                                                                        "type": "",
                                                                        "value": "0x21"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13707:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13707:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13707:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13738:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13741:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13731:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13731:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13731:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x21",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "13625:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13789:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13806:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13813:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "13818:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "13809:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "13809:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13799:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13799:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13799:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13846:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13849:4:22",
                                                                        "type": "",
                                                                        "value": "0x11"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13839:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13839:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13839:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13870:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "13873:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13863:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13863:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "13863:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x11",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "13757:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "13935:155:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13945:20:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "13955:10:22",
                                                                "type": "",
                                                                "value": "0xffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13949:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "13974:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "13993:5:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14000:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13989:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "13989:14:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "13978:7:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14031:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14033:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14033:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14033:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14018:7:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14027:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14015:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14015:15:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14012:41:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14062:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14073:7:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14082:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14069:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14069:15:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14062:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13917:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "13927:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "13889:201:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14144:76:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14166:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14168:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14168:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14168:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14160:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14163:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "lt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14157:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14157:8:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14154:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14197:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14209:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14212:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14205:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14205:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14197:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14126:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14129:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14135:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14095:125:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14399:175:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14416:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14427:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14409:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14409:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14409:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14450:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14461:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14446:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14446:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14466:2:22",
                                                                        "type": "",
                                                                        "value": "25"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14439:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14439:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14439:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14489:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14500:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14485:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14485:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "496e73756666696369656e7420706f6f6c2062616c616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14505:27:22",
                                                                        "type": "",
                                                                        "value": "Insufficient pool balance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14478:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14478:55:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14478:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14542:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14554:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "14565:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14550:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14550:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14542:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14376:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14390:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14225:349:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14627:80:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "14654:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14656:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "14656:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "14656:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14643:1:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14650:1:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14646:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14646:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14640:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14640:13:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "14637:39:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "14685:16:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14696:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14699:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14692:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14692:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14685:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14610:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14613:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14619:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14579:128:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "14767:656:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "14784:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14795:5:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14789:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14789:12:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14777:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14777:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14777:25:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14811:43:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14841:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14848:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14837:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14837:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14831:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14831:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14815:12:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14863:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "14873:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14867:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14911:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14916:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14907:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14907:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memberValue0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14927:12:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14941:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14923:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14923:21:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14900:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14900:45:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "14900:45:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "14954:45:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "14986:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "14993:4:22",
                                                                                "type": "",
                                                                                "value": "0x40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "14982:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "14982:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "14976:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "14976:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "14958:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15008:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15026:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15031:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15022:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15022:11:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "15035:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15018:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15018:19:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15012:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15057:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15062:4:22",
                                                                                "type": "",
                                                                                "value": "0x40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15053:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15053:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memberValue0_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15073:14:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15089:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15069:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15069:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15046:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15046:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15046:47:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15113:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15118:4:22",
                                                                                "type": "",
                                                                                "value": "0x60"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15109:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15109:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15139:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15146:4:22",
                                                                                                "type": "",
                                                                                                "value": "0x60"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15135:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15135:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15129:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15129:23:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15154:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15125:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15125:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15102:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15102:56:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15102:56:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15178:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15183:4:22",
                                                                                "type": "",
                                                                                "value": "0x80"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15174:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15174:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "15200:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "15207:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x80"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15196:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15196:16:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15190:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15190:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15167:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15167:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15167:47:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15234:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15239:4:22",
                                                                                "type": "",
                                                                                "value": "0xa0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15230:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15230:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15260:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15267:4:22",
                                                                                                "type": "",
                                                                                                "value": "0xa0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15256:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15256:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15250:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15250:23:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15275:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15246:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15246:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15223:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15223:56:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15223:56:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15299:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15304:4:22",
                                                                                "type": "",
                                                                                "value": "0xc0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15295:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15295:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15325:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15332:4:22",
                                                                                                "type": "",
                                                                                                "value": "0xc0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15321:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15321:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15315:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15315:23:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15340:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15311:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15311:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15288:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15288:56:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15288:56:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15364:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15369:4:22",
                                                                                "type": "",
                                                                                "value": "0xe0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15360:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15360:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15390:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15397:4:22",
                                                                                                "type": "",
                                                                                                "value": "0xe0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15386:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15386:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15380:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15380:23:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15405:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15376:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15376:40:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15353:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15353:64:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15353:64:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_struct_DepositData",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14751:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "14758:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14712:711:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "15481:737:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15491:22:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15507:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15501:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15501:12:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15495:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "15551:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15572:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "15579:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "15584:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "15575:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "15575:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15565:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "15565:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "15565:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15616:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15619:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x21"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15609:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "15609:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "15609:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15644:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "15647:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15637:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "15637:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "15637:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15535:2:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15539:1:22",
                                                                                "type": "",
                                                                                "value": "3"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15532:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15532:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15525:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15525:17:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "15522:140:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15678:3:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15683:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15671:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15671:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15671:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15706:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15711:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15702:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15702:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "value",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "15732:5:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15739:4:22",
                                                                                                "type": "",
                                                                                                "value": "0x20"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15728:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15728:16:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "mload",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15722:5:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15722:23:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15755:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "15760:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "15751:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "15751:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "15764:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "15747:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "15747:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15718:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15718:49:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15695:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15695:73:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15695:73:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15777:43:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15807:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15814:4:22",
                                                                                "type": "",
                                                                                "value": "0x40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15803:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15803:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15797:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15797:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15781:12:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15847:12:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15865:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15870:4:22",
                                                                                "type": "",
                                                                                "value": "0x40"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15861:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15861:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_uint32",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15829:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15829:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15829:47:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15885:45:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15917:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15924:4:22",
                                                                                "type": "",
                                                                                "value": "0x60"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15913:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15913:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15907:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15907:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "15889:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "15957:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "15977:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "15982:4:22",
                                                                                "type": "",
                                                                                "value": "0x60"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "15973:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "15973:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "15939:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "15939:49:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "15939:49:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "15997:45:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16029:5:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16036:4:22",
                                                                                "type": "",
                                                                                "value": "0x80"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16025:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16025:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16019:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16019:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "16001:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16069:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16089:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16094:4:22",
                                                                                "type": "",
                                                                                "value": "0x80"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16085:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16085:14:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_uint32",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16051:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16051:49:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16051:49:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16120:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16125:4:22",
                                                                                "type": "",
                                                                                "value": "0xa0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16116:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16116:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "16142:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "16149:4:22",
                                                                                        "type": "",
                                                                                        "value": "0xa0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "16138:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "16138:16:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16132:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16132:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16109:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16109:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16109:47:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16176:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16181:4:22",
                                                                                "type": "",
                                                                                "value": "0xc0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16172:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16172:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "16198:5:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "16205:4:22",
                                                                                        "type": "",
                                                                                        "value": "0xc0"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "16194:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "16194:16:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16188:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16188:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16165:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16165:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16165:47:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_struct_RelayData",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15465:5:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "15472:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "15428:790:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "16492:209:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "16502:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16514:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16525:3:22",
                                                                        "type": "",
                                                                        "value": "512"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16510:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16510:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16502:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16568:6:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16576:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16538:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16538:48:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16538:48:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16623:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16635:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16646:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16631:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16631:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_RelayData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16595:27:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16595:56:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16595:56:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16671:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16682:3:22",
                                                                                "type": "",
                                                                                "value": "480"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16667:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16667:19:22"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16688:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16660:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16660:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16660:35:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__to_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16445:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16456:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16464:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16472:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16483:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "16223:478:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "16880:230:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "16897:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16908:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16890:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16890:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16890:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16931:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16942:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16927:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16927:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16947:2:22",
                                                                        "type": "",
                                                                        "value": "40"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16920:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16920:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16920:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "16970:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "16981:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "16966:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "16966:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732061",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "16986:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer amount exceeds a"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "16959:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "16959:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "16959:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17041:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "17052:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17037:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17037:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6c6c6f77616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17057:10:22",
                                                                        "type": "",
                                                                        "value": "llowance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17030:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17030:38:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17030:38:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17077:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17089:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17100:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17085:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17085:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17077:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16857:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "16871:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "16706:404:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17195:169:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17241:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17250:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17253:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17243:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17243:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17243:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17216:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17225:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17212:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17212:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17237:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17208:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17208:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17205:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "17266:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17285:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17279:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17279:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "17270:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17328:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint64",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17304:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17304:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17304:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17343:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "17353:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17343:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint64_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17161:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17172:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17184:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17115:249:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17449:169:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17495:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17504:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17507:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17497:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17497:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17497:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17470:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17479:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17466:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17466:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17491:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17462:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17462:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17459:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "17520:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17539:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17533:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17533:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "17524:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17582:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_uint32",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17558:23:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17558:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17558:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17597:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "17607:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17597:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17415:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17426:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17438:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17369:249:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17704:103:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "17750:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17759:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "17762:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17752:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "17752:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "17752:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17725:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "17734:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "17721:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "17721:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "17746:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17717:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17717:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "17714:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "17775:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "17791:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17785:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17785:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17775:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bytes32_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17670:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17681:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17693:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17623:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "17986:165:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18003:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18014:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "17996:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "17996:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "17996:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18037:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18048:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18033:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18033:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18053:2:22",
                                                                        "type": "",
                                                                        "value": "15"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18026:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18026:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18026:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18076:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18087:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18072:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18072:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "416c726561647920736574746c6564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18092:17:22",
                                                                        "type": "",
                                                                        "value": "Already settled"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18065:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18065:45:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18065:45:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18119:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18131:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18142:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18127:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18127:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18119:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c8ab8a2be779d9262c8a9592ba3da06668869724ea761c2b8bed96453f72b21e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17963:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "17977:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "17812:339:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18203:181:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "18213:20:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "18223:10:22",
                                                                "type": "",
                                                                "value": "0xffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "18217:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "18242:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18257:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18260:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18253:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18253:10:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "18246:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "18272:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18287:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18290:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18283:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18283:10:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "18276:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "18327:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18329:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "18329:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "18329:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18308:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18317:2:22"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18321:3:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18313:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18313:12:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18305:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18305:21:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "18302:47:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18358:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18369:3:22"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18374:3:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18365:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18365:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18358:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint32",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18186:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18189:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18195:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18156:228:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18563:168:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18580:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18591:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18573:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18573:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18573:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18614:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18625:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18610:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18610:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18630:2:22",
                                                                        "type": "",
                                                                        "value": "18"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18603:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18603:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18603:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18653:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18664:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18649:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18649:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4e6f7420736574746c6561626c6520796574",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18669:20:22",
                                                                        "type": "",
                                                                        "value": "Not settleable yet"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18642:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18642:48:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18642:48:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "18699:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18711:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18722:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18707:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18707:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18699:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_343ea3fc08d6a86d9bb33bff5b89a4880beb2877c0758a5b9d28acf6f4331668__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18540:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18554:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18389:342:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "18910:166:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "18927:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18938:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18920:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18920:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18920:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "18961:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "18972:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18957:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18957:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "18977:2:22",
                                                                        "type": "",
                                                                        "value": "16"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18950:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18950:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18950:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19000:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "19011:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "18996:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "18996:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4e6f7420736c6f772072656c61796572",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19016:18:22",
                                                                        "type": "",
                                                                        "value": "Not slow relayer"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18989:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "18989:46:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "18989:46:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19044:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19056:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19067:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19052:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19052:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19044:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_9c5c2898dfaf68f9d9f7da005f4e14e47b970b541fdaa53f62f755602f65f784__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18887:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "18901:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "18736:340:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19128:189:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19138:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "19148:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19142:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19175:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19190:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19193:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19186:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19186:10:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "x_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19179:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19205:21:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19220:1:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19223:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19216:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19216:10:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "y_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19209:3:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "19260:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19262:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19262:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19262:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19241:3:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19250:2:22"
                                                                            },
                                                                            {
                                                                                "name": "y_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19254:3:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19246:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19246:12:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19238:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19238:21:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "19235:47:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19291:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19302:3:22"
                                                                    },
                                                                    {
                                                                        "name": "y_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19307:3:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19298:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19298:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19291:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_uint64",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19111:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19114:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19120:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19081:236:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19369:218:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "19379:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19393:1:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19396:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19389:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19389:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "19383:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "19463:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19465:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19465:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19465:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19421:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19414:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19414:10:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19430:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "19445:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "255"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "19450:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "19441:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "19441:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "19454:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "19437:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "19437:19:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "19458:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "19433:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "19433:27:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sgt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19426:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19426:35:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19410:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19410:52:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "19407:78:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "19534:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19536:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "19536:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "19536:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19501:2:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "19509:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "19520:3:22",
                                                                                                "type": "",
                                                                                                "value": "255"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "19525:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "19516:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "19516:11:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "19529:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "19512:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "19512:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "19505:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "19505:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19497:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19497:36:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "19494:62:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19565:16:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19576:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19579:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19572:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19572:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "sum",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19565:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_add_t_int256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19352:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19355:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "sum",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19361:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19322:265:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "19747:98:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "19757:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19769:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "19780:3:22",
                                                                        "type": "",
                                                                        "value": "224"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19765:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19765:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19757:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19821:6:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "19829:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_RelayData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "19793:27:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "19793:46:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "19793:46:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_RelayData_$3952_memory_ptr__to_t_struct$_RelayData_$3952_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19716:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19727:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "19738:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19592:253:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20024:163:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20041:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20052:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20034:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20034:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20034:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20075:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20086:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20071:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20071:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20091:2:22",
                                                                        "type": "",
                                                                        "value": "13"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20064:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20064:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20064:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20114:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20125:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20110:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20110:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "43616e742073656e6420657468",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20130:15:22",
                                                                        "type": "",
                                                                        "value": "Cant send eth"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20103:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20103:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20103:43:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20155:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20167:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20178:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20163:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20163:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20155:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_6d85c5f14fef91ee2d1e97a9ebbeb17234c6f1697165e89e66564bef6d66742d__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20001:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20015:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "19850:337:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20244:116:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "20303:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20305:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "20305:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "20305:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "20275:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "iszero",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "20268:6:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "20268:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20261:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20261:17:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "y",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20283:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "20294:1:22",
                                                                                                "type": "",
                                                                                                "value": "0"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "20290:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "20290:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "x",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "20298:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "div",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "20286:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "20286:14:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20280:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20280:21:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20257:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20257:45:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "20254:71:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20334:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20349:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20352:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20345:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20345:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "product",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20334:7:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_mul_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20223:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20226:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "product",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20232:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20192:168:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20397:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20414:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20421:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20426:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20417:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20417:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20407:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20407:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20407:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20454:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20457:4:22",
                                                                        "type": "",
                                                                        "value": "0x12"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20447:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20447:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20447:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20478:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20481:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20471:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20471:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20471:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x12",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "20365:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20543:171:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "20574:111:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20595:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "20602:3:22",
                                                                                            "type": "",
                                                                                            "value": "224"
                                                                                        },
                                                                                        {
                                                                                            "kind": "number",
                                                                                            "nodeType": "YulLiteral",
                                                                                            "src": "20607:10:22",
                                                                                            "type": "",
                                                                                            "value": "0x4e487b71"
                                                                                        }
                                                                                    ],
                                                                                    "functionName": {
                                                                                        "name": "shl",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "20598:3:22"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "20598:20:22"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20588:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "20588:31:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "20588:31:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20639:1:22",
                                                                                    "type": "",
                                                                                    "value": "4"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20642:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x12"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "mstore",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20632:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "20632:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "20632:15:22"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20667:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "20670:4:22",
                                                                                    "type": "",
                                                                                    "value": "0x24"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20660:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "20660:15:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "20660:15:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20563:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20556:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20556:9:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "20553:132:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "20694:14:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20703:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20706:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "div",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20699:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20699:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "r",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20694:1:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_div_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20528:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20531:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "r",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20537:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20497:217:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "20893:180:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "20910:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20921:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20903:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20903:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20903:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20944:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20955:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20940:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20940:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20960:2:22",
                                                                        "type": "",
                                                                        "value": "30"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20933:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20933:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20933:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "20983:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "20994:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "20979:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "20979:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5574696c697a6174696f6e20746f6f206869676820746f2072656d6f7665",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "20999:32:22",
                                                                        "type": "",
                                                                        "value": "Utilization too high to remove"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "20972:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "20972:60:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "20972:60:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21041:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21053:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21064:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21049:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21049:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21041:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_014e645e7f8031a206f3b5a5e54294e512399b30b942040cdefea4c386ac4c2c__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20870:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "20884:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "20719:354:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21252:177:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21269:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21280:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21262:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21262:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21262:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21303:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21314:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21299:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21299:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21319:2:22",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21292:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21292:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21292:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21342:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21353:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21338:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21338:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "42616420616464206c6971756964697479204574682076616c7565",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21358:29:22",
                                                                        "type": "",
                                                                        "value": "Bad add liquidity Eth value"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21331:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21331:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21331:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21397:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21409:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21420:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21405:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21405:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21397:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_1b9adfacf0e3713528db5d163499daffed51d205d476d1216aa03b51e5246b78__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21229:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21243:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21078:351:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21608:173:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21625:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21636:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21618:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21618:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21618:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21659:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21670:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21655:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21655:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21675:2:22",
                                                                        "type": "",
                                                                        "value": "23"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21648:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21648:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21648:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "21698:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21709:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21694:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21694:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "52656c61792063616e6e6f742062652073706564207570",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21714:25:22",
                                                                        "type": "",
                                                                        "value": "Relay cannot be sped up"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21687:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21687:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21687:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21749:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21761:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21772:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21757:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21757:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21749:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21585:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21599:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21434:347:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "21915:175:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "21925:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "21937:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21948:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21933:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21933:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21925:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "21960:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21978:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "21983:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "21974:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "21974:11:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "21987:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21970:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21970:19:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "21964:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22005:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22020:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22028:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22016:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22016:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "21998:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "21998:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "21998:34:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22052:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22063:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22048:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22048:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22072:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22080:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22068:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22068:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22041:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22041:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22041:43:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21876:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21887:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21895:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "21906:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "21786:304:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22269:227:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22286:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22297:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22279:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22279:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22279:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22320:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22331:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22316:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22316:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22336:2:22",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22309:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22309:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22309:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22359:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22370:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22355:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22355:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22375:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: decreased allowance below"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22348:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22348:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22348:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22430:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22441:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22426:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22426:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "207a65726f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22446:7:22",
                                                                        "type": "",
                                                                        "value": " zero"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22419:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22419:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22419:35:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "22463:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22475:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22486:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22471:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22471:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22463:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22246:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22260:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22095:401:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22675:177:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22692:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22703:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22685:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22685:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22685:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22726:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22737:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22722:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22722:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22742:2:22",
                                                                        "type": "",
                                                                        "value": "27"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22715:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22715:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22715:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "22765:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22776:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22761:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22761:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4f6e6c79206d756c746963616c6c207769746820302076616c7565",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22781:29:22",
                                                                        "type": "",
                                                                        "value": "Only multicall with 0 value"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22754:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22754:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22754:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "22820:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "22832:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22843:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22828:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22828:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22820:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22652:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "22666:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22501:351:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "22889:95:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22906:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22913:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "22918:10:22",
                                                                                "type": "",
                                                                                "value": "0x4e487b71"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "22909:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "22909:20:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22899:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22899:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22899:31:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22946:1:22",
                                                                        "type": "",
                                                                        "value": "4"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22949:4:22",
                                                                        "type": "",
                                                                        "value": "0x32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22939:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22939:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22939:15:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22970:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "22973:4:22",
                                                                        "type": "",
                                                                        "value": "0x24"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "revert",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "22963:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "22963:15:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "22963:15:22"
                                                        }
                                                    ]
                                                },
                                                "name": "panic_error_0x32",
                                                "nodeType": "YulFunctionDefinition",
                                                "src": "22857:127:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23083:427:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23093:51:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "ptr_to_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23132:11:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23119:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23119:25:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "rel_offset_of_tail",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23097:18:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "23233:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23242:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23245:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23235:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "23235:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "23235:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "rel_offset_of_tail",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23167:18:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [],
                                                                                                "functionName": {
                                                                                                    "name": "calldatasize",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "23195:12:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "23195:14:22"
                                                                                            },
                                                                                            {
                                                                                                "name": "base_ref",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "23211:8:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "23191:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "23191:29:22"
                                                                                    },
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "23226:2:22",
                                                                                                "type": "",
                                                                                                "value": "30"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "not",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "23222:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "23222:7:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "23187:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "23187:43:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23163:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23163:68:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23156:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23156:76:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "23153:96:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23258:47:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "base_ref",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23276:8:22"
                                                                    },
                                                                    {
                                                                        "name": "rel_offset_of_tail",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23286:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23272:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23272:33:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "addr_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23262:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23314:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23337:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldataload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23324:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23324:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23314:6:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "23387:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23396:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23399:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23389:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "23389:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "23389:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23359:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23367:18:22",
                                                                        "type": "",
                                                                        "value": "0xffffffffffffffff"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23356:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23356:30:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "23353:50:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23412:25:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23424:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23432:4:22",
                                                                        "type": "",
                                                                        "value": "0x20"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23420:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23420:17:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "addr",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23412:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "23488:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23497:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23500:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23490:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "23490:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "23490:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "addr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23453:4:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [],
                                                                                "functionName": {
                                                                                    "name": "calldatasize",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "23463:12:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "23463:14:22"
                                                                            },
                                                                            {
                                                                                "name": "length",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23479:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23459:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23459:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sgt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23449:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23449:38:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "23446:58:22"
                                                        }
                                                    ]
                                                },
                                                "name": "access_calldata_tail_t_bytes_calldata_ptr",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "base_ref",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23040:8:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "ptr_to_tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23050:11:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "addr",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23066:4:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "length",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23072:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "22989:521:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23662:124:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23685:3:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23690:6:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23698:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "calldatacopy",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23672:12:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23672:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23672:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23714:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23728:3:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23733:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23724:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23724:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23718:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23756:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23760:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23749:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23749:13:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "23749:13:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "23771:9:22",
                                                            "value": {
                                                                "name": "_1",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "23778:2:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23771:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23630:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23635:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23643:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23654:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "23515:271:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "23882:793:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "23928:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23937:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "23940:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23930:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "23930:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "23930:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23903:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "23912:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "23899:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "23899:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "23924:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23895:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23895:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "23892:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23953:30:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "23973:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "23967:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "23967:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "offset",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23957:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "23992:28:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "24002:18:22",
                                                                "type": "",
                                                                "value": "0xffffffffffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "23996:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24047:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24056:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24059:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24049:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24049:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24049:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24035:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24043:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24032:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24032:14:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24029:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24072:32:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24086:9:22"
                                                                    },
                                                                    {
                                                                        "name": "offset",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24097:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24082:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24082:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24076:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24152:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24161:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24164:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24154:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24154:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24154:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "24131:2:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "24135:4:22",
                                                                                        "type": "",
                                                                                        "value": "0x1f"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "24127:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "24127:13:22"
                                                                            },
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24142:7:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24123:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24123:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "iszero",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24116:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24116:35:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24113:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24177:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24193:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24187:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24187:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24181:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24219:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24221:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24221:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24221:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24211:2:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24215:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24208:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24208:10:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24205:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24250:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24264:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "not",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24260:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24260:7:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24254:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24276:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24296:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24290:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24290:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24280:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24308:71:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24330:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "name": "_3",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "24354:2:22"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "24358:4:22",
                                                                                                        "type": "",
                                                                                                        "value": "0x1f"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "24350:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "24350:13:22"
                                                                                            },
                                                                                            {
                                                                                                "name": "_4",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "24365:2:22"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "and",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "24346:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "24346:22:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "24370:2:22",
                                                                                        "type": "",
                                                                                        "value": "63"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "24342:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "24342:31:22"
                                                                            },
                                                                            {
                                                                                "name": "_4",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24375:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24338:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24338:40:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24326:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24326:53:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24312:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24438:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24440:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24440:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24440:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24397:10:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24409:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24394:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24394:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24417:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24429:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24414:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24414:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24391:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24391:46:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24388:72:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24476:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24480:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24469:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24469:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24469:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24507:6:22"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24515:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24500:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24500:18:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24500:18:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24564:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24573:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24576:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24566:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24566:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24566:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "_2",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "24541:2:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "24545:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "24537:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "24537:11:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24550:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24533:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24533:20:22"
                                                                    },
                                                                    {
                                                                        "name": "dataEnd",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24555:7:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "gt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24530:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24530:33:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24527:53:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24615:2:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24619:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24611:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24611:11:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24628:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24636:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24624:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24624:15:22"
                                                                    },
                                                                    {
                                                                        "name": "_3",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24641:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24589:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24589:55:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "24589:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "24653:16:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "24663:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24653:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23848:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23859:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "23871:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "23791:884:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "24727:88:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24758:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24760:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24760:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24760:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24743:5:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "24754:1:22",
                                                                                "type": "",
                                                                                "value": "0"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "not",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24750:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24750:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "eq",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24740:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24740:17:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24737:43:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "24789:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24800:5:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24807:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24796:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24796:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "ret",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24789:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "increment_t_uint256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "value",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24709:5:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "ret",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24719:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "24680:135:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "24901:170:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "24947:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24956:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "24959:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24949:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "24949:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "24949:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24922:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "24931:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "24918:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "24918:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "24943:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24914:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24914:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "24911:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "24972:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "24991:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "24985:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "24985:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "24976:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25035:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25010:24:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25010:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25010:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "25050:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "25060:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25050:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_address_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24867:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24878:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "24890:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "24820:251:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "25183:336:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "25229:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "25238:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "25241:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25231:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "25231:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "25231:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25204:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25213:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25200:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25200:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25225:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25196:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25196:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "25193:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "25254:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25274:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25268:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25268:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memPtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "25258:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "25286:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25308:6:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25316:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25304:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25304:15:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "newFreePtr",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "25290:10:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "25394:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x41",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25396:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "25396:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "25396:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25337:10:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25349:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "gt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25334:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25334:34:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "newFreePtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25373:10:22"
                                                                            },
                                                                            {
                                                                                "name": "memPtr",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25385:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "lt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25370:2:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25370:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "or",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25331:2:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25331:62:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "25328:88:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25432:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    },
                                                                    {
                                                                        "name": "newFreePtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25436:10:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25425:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25425:22:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25425:22:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memPtr",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25463:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25477:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25471:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25471:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25456:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25456:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25456:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "25497:16:22",
                                                            "value": {
                                                                "name": "memPtr",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "25507:6:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25497:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25149:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25160:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25172:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "25076:443:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "25698:163:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25715:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25726:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25708:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25708:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25708:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25749:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25760:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25745:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25745:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25765:2:22",
                                                                        "type": "",
                                                                        "value": "13"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25738:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25738:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25738:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "25788:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "25799:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "25784:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "25784:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "50617374206c6976656e657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25804:15:22",
                                                                        "type": "",
                                                                        "value": "Past liveness"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25777:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25777:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "25777:43:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "25829:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "25841:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "25852:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25837:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "25837:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "25829:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_21c11d76539f521406afa6465d19dbc68951b755ccb3b86b975cbdb7c85590e0__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25675:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "25689:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "25524:337:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "26040:164:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26057:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26068:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26050:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26050:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26050:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26091:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26102:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26087:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26087:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26107:2:22",
                                                                        "type": "",
                                                                        "value": "14"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26080:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26080:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26080:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26130:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26141:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26126:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26126:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4e6f742064697370757461626c65",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26146:16:22",
                                                                        "type": "",
                                                                        "value": "Not disputable"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26119:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26119:44:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26119:44:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26172:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26184:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26195:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26180:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26180:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26172:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_6e21cb62d00f42c575e706905a321dbe03b2d3e18c1a8cd6dde1b236d44f9cb5__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26017:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26031:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "25866:338:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "26383:181:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26400:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26411:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26393:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26393:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26393:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26434:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26445:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26430:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26430:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26450:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26423:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26423:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26423:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26473:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26484:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26469:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26469:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26489:33:22",
                                                                        "type": "",
                                                                        "value": "ReentrancyGuard: reentrant call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26462:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26462:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26462:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26532:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26544:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26555:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26540:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26540:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26532:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26360:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26374:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26209:355:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "26743:226:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26760:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26771:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26753:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26753:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26753:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26794:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26805:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26790:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26790:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26810:2:22",
                                                                        "type": "",
                                                                        "value": "36"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26783:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26783:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26783:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26833:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26844:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26829:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26829:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f20616464",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26849:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: approve from the zero add"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26822:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26822:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26822:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "26904:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "26915:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "26900:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "26900:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "72657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26920:6:22",
                                                                        "type": "",
                                                                        "value": "ress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26893:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26893:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "26893:34:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "26936:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "26948:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "26959:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26944:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "26944:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "26936:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26720:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "26734:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26569:400:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "27148:224:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27165:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27176:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27158:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27158:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27158:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27199:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27210:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27195:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27195:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27215:2:22",
                                                                        "type": "",
                                                                        "value": "34"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27188:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27188:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27188:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27238:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27249:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27234:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27234:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a20617070726f766520746f20746865207a65726f206164647265",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27254:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: approve to the zero addre"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27227:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27227:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27227:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27309:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27320:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27305:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27305:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "7373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27325:4:22",
                                                                        "type": "",
                                                                        "value": "ss"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27298:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27298:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27298:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "27339:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27351:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27362:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27347:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27347:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27339:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27125:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27139:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "26974:398:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "27564:170:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "27574:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27586:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "27597:3:22",
                                                                        "type": "",
                                                                        "value": "288"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27582:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27582:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27574:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27640:6:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "27648:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27610:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27610:48:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27610:48:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27678:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "27689:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27674:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27674:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "27699:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "27715:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "27720:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "27711:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "27711:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "27724:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "27707:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "27707:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "27695:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "27695:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27667:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27667:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "27667:61:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27525:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27536:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27544:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27555:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "27377:357:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "27978:300:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "27988:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28000:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28011:3:22",
                                                                        "type": "",
                                                                        "value": "352"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27996:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "27996:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "27988:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28054:6:22"
                                                                    },
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28062:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_struct_DepositData",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28024:29:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28024:48:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28024:48:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28092:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28103:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28088:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28088:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28113:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28121:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28109:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28109:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28081:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28081:52:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28081:52:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28153:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28164:3:22",
                                                                                "type": "",
                                                                                "value": "288"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28149:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28149:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28174:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28182:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28170:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28170:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28142:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28142:60:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28142:60:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28222:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28233:3:22",
                                                                                "type": "",
                                                                                "value": "320"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28218:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28218:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28243:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "28259:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "28264:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "28255:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "28255:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "28268:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "28251:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "28251:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28239:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28239:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28211:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28211:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28211:61:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27923:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27934:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27942:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27950:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27958:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "27969:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "27739:539:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "28440:218:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "28450:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28462:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28473:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28458:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28458:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28450:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "28485:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28503:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28508:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28499:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28499:11:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28512:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28495:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28495:19:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "28489:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28530:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28545:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28553:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28541:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28541:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28523:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28523:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28523:34:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28577:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28588:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28573:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28573:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28597:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28605:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28593:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28593:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28566:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28566:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28566:43:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28629:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28640:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28625:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28625:18:22"
                                                                    },
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28645:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28618:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28618:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28618:34:22"
                                                        }
                                                    ]
                                                },
                                                "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": "28393:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28404:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28412:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28420:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28431:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "28283:375:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "28837:227:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "28854:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28865:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28847:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28847:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28847:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28888:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28899:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28884:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28884:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28904:2:22",
                                                                        "type": "",
                                                                        "value": "37"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28877:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28877:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28877:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28927:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "28938:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28923:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28923:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f206164",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "28943:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer from the zero ad"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28916:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28916:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28916:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "28998:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29009:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "28994:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "28994:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29014:7:22",
                                                                        "type": "",
                                                                        "value": "dress"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "28987:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "28987:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "28987:35:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "29031:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29043:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29054:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29039:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29039:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29031:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28814:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "28828:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "28663:401:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "29243:225:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29260:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29271:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29253:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29253:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29253:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29294:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29305:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29290:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29290:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29310:2:22",
                                                                        "type": "",
                                                                        "value": "35"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29283:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29283:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29283:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29333:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29344:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29329:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29329:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29349:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer to the zero addr"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29322:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29322:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29322:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29404:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29415:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29400:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29400:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29420:5:22",
                                                                        "type": "",
                                                                        "value": "ess"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29393:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29393:33:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29393:33:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "29435:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29447:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29458:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29443:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29443:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29435:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29220:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29234:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "29069:399:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "29647:228:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29664:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29675:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29657:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29657:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29657:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29698:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29709:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29694:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29694:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29714:2:22",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29687:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29687:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29687:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29737:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29748:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29733:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29733:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29753:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: transfer amount exceeds b"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29726:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29726:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29726:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "29808:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "29819:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "29804:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "29804:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "616c616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29824:8:22",
                                                                        "type": "",
                                                                        "value": "alance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29797:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29797:36:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "29797:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "29842:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29854:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "29865:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29850:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29850:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29842:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29624:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "29638:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "29473:402:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "30054:254:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30071:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30082:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30064:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30064:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30064:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30105:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30116:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30101:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30101:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30121:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30094:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30094:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30094:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30144:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30155:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30140:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30140:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "4861736865642072656c617920706172616d7320646f206e6f74206d61746368",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30160:34:22",
                                                                        "type": "",
                                                                        "value": "Hashed relay params do not match"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30133:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30133:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30133:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30215:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30226:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30211:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30211:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "206578697374696e672072656c6179206861736820666f72206465706f736974",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30231:34:22",
                                                                        "type": "",
                                                                        "value": " existing relay hash for deposit"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30204:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30204:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30204:62:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "30275:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30287:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30298:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30283:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30283:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30275:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_140eb91724df70a0cee818ba517cecd0d75a058e9680b55981a9187bd7c49aba__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30031:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30045:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "29880:428:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "30440:144:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "30450:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30462:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30473:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30458:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30458:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30450:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30492:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30503:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30485:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30485:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30485:25:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30530:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30541:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30526:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30526:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30550:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30558:18:22",
                                                                                "type": "",
                                                                                "value": "0xffffffffffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30546:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30546:31:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30519:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30519:59:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30519:59:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30401:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30412:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30420:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30431:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "30313:271:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "30718:145:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "30728:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30740:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30751:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30736:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30736:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30728:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30770:9:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30785:6:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "30801:3:22",
                                                                                                "type": "",
                                                                                                "value": "160"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "30806:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "30797:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "30797:11:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "30810:1:22",
                                                                                        "type": "",
                                                                                        "value": "1"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "sub",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "30793:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "30793:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30781:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30781:32:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30763:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30763:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30763:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30834:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "30845:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30830:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30830:18:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30850:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30823:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30823:34:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "30823:34:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30679:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30690:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30698:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30709:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "30589:274:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "30916:219:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "30926:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "30940:1:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "30943:1:22",
                                                                        "type": "",
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30936:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30936:9:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "30930:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "31002:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31004:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "31004:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "31004:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30968:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "iszero",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30961:6:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30961:10:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "x",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "30977:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "30988:3:22",
                                                                                                "type": "",
                                                                                                "value": "255"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "30993:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "shl",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "30984:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "30984:11:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "y",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "30997:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "30980:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "30980:19:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "slt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30973:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30973:27:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30957:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "30957:44:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "30954:70:22"
                                                        },
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "31081:22:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [],
                                                                            "functionName": {
                                                                                "name": "panic_error_0x11",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31083:16:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "31083:18:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "31083:18:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31040:2:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "x",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31048:1:22"
                                                                            },
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "31063:3:22",
                                                                                                        "type": "",
                                                                                                        "value": "255"
                                                                                                    },
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "31068:1:22",
                                                                                                        "type": "",
                                                                                                        "value": "1"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "shl",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "31059:3:22"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "31059:11:22"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "31072:1:22",
                                                                                                "type": "",
                                                                                                "value": "1"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "sub",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "31055:3:22"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "31055:19:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "y",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "31076:1:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "31051:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "31051:27:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sgt",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31044:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31044:35:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "and",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31036:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31036:44:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "31033:70:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "31112:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "x",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31124:1:22"
                                                                    },
                                                                    {
                                                                        "name": "y",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31127:1:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31120:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31120:9:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "diff",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31112:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "checked_sub_t_int256",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "x",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30898:1:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "y",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30901:1:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "diff",
                                                        "nodeType": "YulTypedName",
                                                        "src": "30907:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "30868:267:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "31314:223:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31331:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31342:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31324:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31324:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31324:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31365:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31376:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31361:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31361:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31381:2:22",
                                                                        "type": "",
                                                                        "value": "33"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31354:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31354:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31354:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31404:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31415:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31400:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31400:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f20616464726573",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31420:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: burn from the zero addres"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31393:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31393:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31393:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31475:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31486:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31471:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31471:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "73",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31491:3:22",
                                                                        "type": "",
                                                                        "value": "s"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31464:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31464:31:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31464:31:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "31504:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31516:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31527:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31512:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31512:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31504:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31291:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31305:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "31140:397:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "31716:224:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31733:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31744:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31726:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31726:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31726:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31767:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31778:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31763:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31763:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31783:2:22",
                                                                        "type": "",
                                                                        "value": "34"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31756:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31756:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31756:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31806:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31817:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31802:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31802:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31822:34:22",
                                                                        "type": "",
                                                                        "value": "ERC20: burn amount exceeds balan"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31795:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31795:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31795:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "31877:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "31888:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "31873:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "31873:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31893:4:22",
                                                                        "type": "",
                                                                        "value": "ce"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31866:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31866:32:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "31866:32:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "31907:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "31919:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "31930:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31915:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "31915:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "31907:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31693:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "31707:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "31542:398:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "32119:181:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32136:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32147:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32129:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32129:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32129:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32170:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32181:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32166:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32166:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32186:2:22",
                                                                        "type": "",
                                                                        "value": "31"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32159:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32159:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32159:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32209:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32220:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32205:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32205:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32225:33:22",
                                                                        "type": "",
                                                                        "value": "ERC20: mint to the zero address"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32198:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32198:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32198:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "32268:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32280:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32291:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32276:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32276:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32268:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32096:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32110:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "31945:355:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "32665:573:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "32675:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "32685:3:22",
                                                                "type": "",
                                                                "value": "288"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "32679:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32704:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32715:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32697:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32697:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32697:25:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "32731:20:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "32741:10:22",
                                                                "type": "",
                                                                "value": "0xffffffff"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "32735:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32771:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32782:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32767:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32767:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32791:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32799:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32787:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32787:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32760:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32760:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32760:43:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32823:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32834:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32819:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32819:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32839:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32812:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32812:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32812:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "32851:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "32877:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32889:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32900:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32885:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32885:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32859:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32859:45:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32851:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "32913:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32931:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32936:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "shl",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32927:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32927:11:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "32940:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "sub",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32923:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32923:19:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "32917:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32962:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "32973:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32958:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32958:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32982:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "32990:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "32978:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "32978:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "32951:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "32951:43:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "32951:43:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33014:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33025:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33010:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33010:19:22"
                                                                    },
                                                                    {
                                                                        "name": "value4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33031:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33003:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33003:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33003:35:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33058:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33069:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33054:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33054:19:22"
                                                                    },
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33075:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33047:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33047:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33047:35:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33102:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33113:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33098:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33098:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value6",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33123:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33131:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33119:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33119:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33091:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33091:44:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33091:44:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33155:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33166:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33151:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33151:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value7",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33176:6:22"
                                                                            },
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33184:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33172:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33172:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33144:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33144:44:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33144:44:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33208:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33219:3:22",
                                                                                "type": "",
                                                                                "value": "256"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33204:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33204:19:22"
                                                                    },
                                                                    {
                                                                        "name": "value8",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33225:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33197:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33197:35:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33197:35:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_contract$_IERC20_$584_t_rational_0_by_1_t_uint256_t_uint32_t_address_t_int256__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_address_t_uint256_t_uint256_t_uint256_t_address_t_int256__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32570:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value8",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32581:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value7",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32589:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value6",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32597:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32605:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32613:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32621:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32629:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32637:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32645:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "32656:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "32305:933:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "33324:103:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "33370:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "33379:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "33382:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33372:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "33372:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "33372:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33345:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33354:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33341:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33341:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "33366:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33337:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33337:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "33334:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "33395:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33411:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33405:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33405:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33395:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_uint256_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33290:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33301:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33313:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "33243:184:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "33739:1292:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "33749:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "33759:3:22",
                                                                "type": "",
                                                                "value": "512"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "33753:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33778:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33789:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33771:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33771:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33771:25:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33816:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33827:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33812:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33812:18:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33836:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33844:10:22",
                                                                                "type": "",
                                                                                "value": "0xffffffff"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "and",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33832:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33832:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33805:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33805:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33805:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33876:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "33887:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33872:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33872:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33892:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33865:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33865:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33865:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "33904:53:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "33930:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33942:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33953:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33938:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33938:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_string",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33912:17:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33912:45:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33904:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "33991:6:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "33985:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "33985:13:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34004:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34015:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34000:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34000:18:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "33966:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "33966:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "33966:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34028:42:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34058:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34066:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34054:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34054:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34048:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34048:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34032:12:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34098:12:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34116:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34127:3:22",
                                                                                "type": "",
                                                                                "value": "128"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34112:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34112:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34079:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34079:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34079:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34141:44:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34173:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34181:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34169:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34169:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34163:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34163:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34145:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34213:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34233:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34244:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34229:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34229:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34194:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34194:55:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34194:55:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34258:44:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34290:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34298:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34286:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34286:15:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34280:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34280:22:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "memberValue0_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34262:14:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "memberValue0_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34327:14:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34347:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34358:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34343:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34343:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34311:15:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34311:52:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34311:52:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34383:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34394:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34379:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34379:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34410:6:22"
                                                                                    },
                                                                                    {
                                                                                        "kind": "number",
                                                                                        "nodeType": "YulLiteral",
                                                                                        "src": "34418:3:22",
                                                                                        "type": "",
                                                                                        "value": "128"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "34406:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "34406:16:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34400:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34400:23:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34372:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34372:52:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34372:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34433:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34453:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34461:3:22",
                                                                                "type": "",
                                                                                "value": "160"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34449:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34449:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34443:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34443:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34437:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34475:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "34485:3:22",
                                                                "type": "",
                                                                "value": "256"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_3",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34479:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34508:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34519:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34504:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34504:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34524:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34497:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34497:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34497:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34536:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34556:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34564:3:22",
                                                                                "type": "",
                                                                                "value": "192"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34552:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34552:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34546:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34546:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_4",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34540:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34578:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "34588:3:22",
                                                                "type": "",
                                                                "value": "288"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_5",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34582:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34611:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_5",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34622:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34607:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34607:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34627:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34600:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34600:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34600:30:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34639:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value3",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34659:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34667:3:22",
                                                                                "type": "",
                                                                                "value": "224"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34655:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34655:16:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34649:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34649:23:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_6",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34643:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "34681:13:22",
                                                            "value": {
                                                                "kind": "number",
                                                                "nodeType": "YulLiteral",
                                                                "src": "34691:3:22",
                                                                "type": "",
                                                                "value": "320"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_7",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "34685:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34714:9:22"
                                                                            },
                                                                            {
                                                                                "name": "_7",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34725:2:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34710:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34710:18:22"
                                                                    },
                                                                    {
                                                                        "name": "_6",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34730:2:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34703:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34703:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34703:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34753:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34764:3:22",
                                                                                "type": "",
                                                                                "value": "352"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34749:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34749:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34780:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34788:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "34776:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "34776:15:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34770:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34770:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34742:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34742:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34742:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34813:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34824:3:22",
                                                                                "type": "",
                                                                                "value": "384"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34809:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34809:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34840:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_5",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34848:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "34836:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "34836:15:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34830:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34830:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34802:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34802:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34802:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34873:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34884:3:22",
                                                                                "type": "",
                                                                                "value": "416"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34869:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34869:19:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "name": "value3",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34900:6:22"
                                                                                    },
                                                                                    {
                                                                                        "name": "_7",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "34908:2:22"
                                                                                    }
                                                                                ],
                                                                                "functionName": {
                                                                                    "name": "add",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "34896:3:22"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "34896:15:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "mload",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34890:5:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34890:22:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34862:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34862:51:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34862:51:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value4",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34941:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "34953:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "34964:3:22",
                                                                                "type": "",
                                                                                "value": "448"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "34949:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "34949:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34922:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34922:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34922:47:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value5",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "34997:6:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35009:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "35020:3:22",
                                                                                "type": "",
                                                                                "value": "480"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35005:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35005:19:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "abi_encode_address",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "34978:18:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "34978:47:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "34978:47:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33668:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value5",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33679:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value4",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33687:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value3",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33695:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33703:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33711:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33719:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "33730:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "33432:1599:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "35114:167:22",
                                                    "statements": [
                                                        {
                                                            "body": {
                                                                "nodeType": "YulBlock",
                                                                "src": "35160:16:22",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "35169:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                },
                                                                                {
                                                                                    "kind": "number",
                                                                                    "nodeType": "YulLiteral",
                                                                                    "src": "35172:1:22",
                                                                                    "type": "",
                                                                                    "value": "0"
                                                                                }
                                                                            ],
                                                                            "functionName": {
                                                                                "name": "revert",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35162:6:22"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "35162:12:22"
                                                                        },
                                                                        "nodeType": "YulExpressionStatement",
                                                                        "src": "35162:12:22"
                                                                    }
                                                                ]
                                                            },
                                                            "condition": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "dataEnd",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35135:7:22"
                                                                            },
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35144:9:22"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "sub",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35131:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35131:23:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35156:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "slt",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35127:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35127:32:22"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "35124:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "35185:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35204:9:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35198:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35198:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "value",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "35189:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35245:5:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "validator_revert_bool",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35223:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35223:28:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35223:28:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "35260:15:22",
                                                            "value": {
                                                                "name": "value",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "35270:5:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "value0",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35260:6:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_decode_tuple_t_bool_fromMemory",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35080:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "dataEnd",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35091:7:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35103:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "35036:245:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "35460:232:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35477:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35488:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35470:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35470:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35470:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35511:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "35522:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35507:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35507:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35527:2:22",
                                                                        "type": "",
                                                                        "value": "42"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35500:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35500:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35500:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35550:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "35561:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35546:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35546:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35566:34:22",
                                                                        "type": "",
                                                                        "value": "SafeERC20: ERC20 operation did n"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35539:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35539:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35539:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35621:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "35632:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35617:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35617:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "6f742073756363656564",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35637:12:22",
                                                                        "type": "",
                                                                        "value": "ot succeed"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35610:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35610:40:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35610:40:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "35659:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35671:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "35682:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35667:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35667:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35659:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35437:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35451:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "35286:406:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "35926:429:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "35936:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "35956:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35950:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35950:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "35940:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "35998:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36006:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "35994:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "35994:17:22"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36013:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36018:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "35972:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "35972:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "35972:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "36034:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36051:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36056:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36047:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36047:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "end_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "36038:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "36072:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36094:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36088:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36088:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "36076:8:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36136:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36144:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36132:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36132:17:22"
                                                                    },
                                                                    {
                                                                        "name": "end_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36151:5:22"
                                                                    },
                                                                    {
                                                                        "name": "length_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36158:8:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36110:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36110:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36110:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "36176:33:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "end_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36193:5:22"
                                                                    },
                                                                    {
                                                                        "name": "length_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36200:8:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36189:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36189:20:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "end_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "36180:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "36218:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36240:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36234:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36234:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length_2",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "36222:8:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value2",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36282:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36290:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36278:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36278:17:22"
                                                                    },
                                                                    {
                                                                        "name": "end_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36297:5:22"
                                                                    },
                                                                    {
                                                                        "name": "length_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36304:8:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36256:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36256:57:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36256:57:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "36322:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "end_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36333:5:22"
                                                                    },
                                                                    {
                                                                        "name": "length_2",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36340:8:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36329:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36329:20:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36322:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35886:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value2",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35891:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35899:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35907:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "35918:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "35697:658:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "36534:244:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36551:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36562:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36544:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36544:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36544:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36585:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36596:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36581:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36581:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36601:2:22",
                                                                        "type": "",
                                                                        "value": "54"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36574:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36574:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36574:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36624:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36635:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36620:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36620:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36640:34:22",
                                                                        "type": "",
                                                                        "value": "SafeERC20: approve from non-zero"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36613:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36613:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36613:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "36695:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "36706:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "36691:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "36691:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36711:24:22",
                                                                        "type": "",
                                                                        "value": " to non-zero allowance"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36684:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36684:52:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "36684:52:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "36745:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "36757:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "36768:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36753:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "36753:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "36745:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "36511:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "36525:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "36360:418:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "37122:231:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37139:3:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "2c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37144:3:22",
                                                                        "type": "",
                                                                        "value": ","
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37132:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37132:16:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37132:16:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "37157:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37177:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37171:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37171:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "37161:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37219:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "37227:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37215:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37215:17:22"
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37238:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "37243:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37234:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37234:11:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37247:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37193:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37193:61:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37193:61:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "37263:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37277:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37282:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37273:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37273:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "37267:2:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "_1",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37309:2:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "37313:1:22",
                                                                                "type": "",
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37305:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37305:10:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "3a",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37317:3:22",
                                                                        "type": "",
                                                                        "value": ":"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37298:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37298:23:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37298:23:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "37330:17:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37341:2:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37345:1:22",
                                                                        "type": "",
                                                                        "value": "2"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37337:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37337:10:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37330:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_string_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37098:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37103:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37114:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "36783:570:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "37596:199:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "37606:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37626:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37620:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37620:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "37610:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37668:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "37676:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37664:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37664:17:22"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37683:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37688:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37642:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37642:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37642:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "37704:29:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37721:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37726:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37717:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37717:16:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "end_1",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "37708:5:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "end_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37749:5:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "3a",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37756:3:22",
                                                                        "type": "",
                                                                        "value": ":"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37742:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37742:18:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37742:18:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "37769:20:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "end_1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37780:5:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "37787:1:22",
                                                                        "type": "",
                                                                        "value": "1"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37776:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37776:13:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37769:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37572:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37577:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37588:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "37358:437:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "37947:100:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37964:3:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "37969:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37957:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37957:19:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37957:19:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "pos",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "37996:3:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38001:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "37992:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "37992:12:22"
                                                                    },
                                                                    {
                                                                        "name": "value1",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38006:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "37985:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "37985:28:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "37985:28:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "38022:19:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38033:3:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38038:2:22",
                                                                        "type": "",
                                                                        "value": "64"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38029:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38029:12:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38022:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "pos",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37915:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value1",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37920:6:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37928:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "37939:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "37800:247:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "38226:228:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38243:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38254:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38236:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38236:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38236:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38277:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38288:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38273:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38273:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38293:2:22",
                                                                        "type": "",
                                                                        "value": "38"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38266:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38266:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38266:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38316:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38327:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38312:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38312:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38332:34:22",
                                                                        "type": "",
                                                                        "value": "Address: insufficient balance fo"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38305:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38305:62:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38305:62:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38387:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38398:2:22",
                                                                                "type": "",
                                                                                "value": "96"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38383:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38383:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "722063616c6c",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38403:8:22",
                                                                        "type": "",
                                                                        "value": "r call"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38376:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38376:36:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38376:36:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "38421:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38433:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38444:3:22",
                                                                        "type": "",
                                                                        "value": "128"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38429:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38429:19:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38421:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38203:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38217:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "38052:402:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "38633:179:22",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38650:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38661:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38643:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38643:21:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38643:21:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38684:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38695:2:22",
                                                                                "type": "",
                                                                                "value": "32"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38680:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38680:18:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38700:2:22",
                                                                        "type": "",
                                                                        "value": "29"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38673:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38673:30:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38673:30:22"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "headStart",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "38723:9:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "38734:2:22",
                                                                                "type": "",
                                                                                "value": "64"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "38719:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "38719:18:22"
                                                                    },
                                                                    {
                                                                        "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                                                        "kind": "string",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38739:31:22",
                                                                        "type": "",
                                                                        "value": "Address: call to non-contract"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38712:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38712:59:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "38712:59:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "38780:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38792:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "38803:2:22",
                                                                        "type": "",
                                                                        "value": "96"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38788:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38788:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38780:4:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38610:9:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38624:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "38459:353:22"
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "38954:137:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "38964:27:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "38984:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mload",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "38978:5:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "38978:13:22"
                                                            },
                                                            "variables": [
                                                                {
                                                                    "name": "length",
                                                                    "nodeType": "YulTypedName",
                                                                    "src": "38968:6:22",
                                                                    "type": ""
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "name": "value0",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "39026:6:22"
                                                                            },
                                                                            {
                                                                                "kind": "number",
                                                                                "nodeType": "YulLiteral",
                                                                                "src": "39034:4:22",
                                                                                "type": "",
                                                                                "value": "0x20"
                                                                            }
                                                                        ],
                                                                        "functionName": {
                                                                            "name": "add",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "39022:3:22"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "39022:17:22"
                                                                    },
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "39041:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "39046:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "copy_memory_to_memory",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "39000:21:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "39000:53:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "39000:53:22"
                                                        },
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "39062:23:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "pos",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "39073:3:22"
                                                                    },
                                                                    {
                                                                        "name": "length",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "39078:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "39069:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "39069:16:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "end",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "39062:3:22"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "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": "38930:3:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38935:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "end",
                                                        "nodeType": "YulTypedName",
                                                        "src": "38946:3:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "38817:274:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\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 abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\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        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function validator_revert_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_bool(value, pos)\n    {\n        mstore(pos, iszero(iszero(value)))\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_uint64(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffffffffffff))\n    }\n    function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffff))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xe0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function validator_revert_uint64(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint64(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_uint64(value)\n    }\n    function validator_revert_uint32(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_uint32(value)\n    }\n    function abi_decode_struct_DepositData(headStart, end) -> value\n    {\n        let _1 := 0x0100\n        if slt(sub(end, headStart), _1) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, _1)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        mstore(memPtr, calldataload(headStart))\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_uint64(value_1)\n        mstore(add(memPtr, 32), value_1)\n        mstore(add(memPtr, 64), abi_decode_address(add(headStart, 64)))\n        mstore(add(memPtr, 96), abi_decode_address(add(headStart, 96)))\n        mstore(add(memPtr, 128), calldataload(add(headStart, 128)))\n        mstore(add(memPtr, 160), abi_decode_uint64(add(headStart, 160)))\n        mstore(add(memPtr, 192), abi_decode_uint64(add(headStart, 192)))\n        mstore(add(memPtr, 224), abi_decode_uint32(add(headStart, 224)))\n    }\n    function abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_uint64(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 288) { revert(0, 0) }\n        value0 := abi_decode_struct_DepositData(headStart, dataEnd)\n        let value := calldataload(add(headStart, 256))\n        validator_revert_uint64(value)\n        value1 := 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    function abi_encode_uint32(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffff))\n    }\n    function abi_encode_tuple_t_uint32__to_t_uint32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff))\n    }\n    function abi_decode_tuple_t_struct$_DepositData_$3936_memory_ptrt_struct$_RelayData_$3952_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 480) { revert(0, 0) }\n        value0 := abi_decode_struct_DepositData(headStart, dataEnd)\n        if slt(add(_1, not(255)), 0xe0) { revert(0, 0) }\n        let value := allocate_memory()\n        let value_1 := calldataload(add(headStart, 256))\n        if iszero(lt(value_1, 3)) { revert(0, 0) }\n        mstore(value, value_1)\n        mstore(add(value, 32), abi_decode_address(add(headStart, 288)))\n        mstore(add(value, 64), abi_decode_uint32(add(headStart, 320)))\n        mstore(add(value, 96), abi_decode_uint64(add(headStart, 352)))\n        mstore(add(value, 128), abi_decode_uint32(add(headStart, 384)))\n        mstore(add(value, 160), calldataload(add(headStart, 416)))\n        mstore(add(value, 192), calldataload(add(headStart, 448)))\n        value1 := value\n    }\n    function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_encode_address(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(160, 1), 1)))\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_contract$_SkinnyOptimisticOracleInterface_$6650__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_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_uint64(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_uint64(value)\n        value0 := value\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 abi_decode_tuple_t_uint256t_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let value := calldataload(add(headStart, 32))\n        validator_revert_bool(value)\n        value1 := value\n    }\n    function abi_encode_tuple_t_int256__to_t_int256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_contract$_StoreInterface_$6695__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_contract$_BridgeAdminInterface_$6109__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_decode_tuple_t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let length := calldataload(_2)\n        if gt(length, _1) { revert(0, 0) }\n        if gt(add(add(_2, shl(5, length)), 32), dataEnd) { revert(0, 0) }\n        value0 := add(_2, 32)\n        value1 := length\n    }\n    function abi_encode_tuple_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let tail_2 := add(add(headStart, shl(5, length)), 64)\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            tail_2 := abi_encode_string(mload(srcPtr), tail_2)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_contract$_IERC20_$584__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_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_4d52a6da38278ead32cd9f33eb5cd33c43ec96fe5ce1bd6e71fb70656b4cbf2e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Caller not bridge admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_88329e000212abe98d559877c824675fd701dbb3e66db634ca25c1b6e368a147__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 19)\n        mstore(add(headStart, 64), \"Relays are disabled\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 12)\n        mstore(add(headStart, 64), \"Invalid fees\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"Pending relay exists\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x21()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x21)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function increment_t_uint32(value) -> ret\n    {\n        let _1 := 0xffffffff\n        let value_1 := and(value, _1)\n        if eq(value_1, _1) { panic_error_0x11() }\n        ret := add(value_1, 1)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"Insufficient pool balance\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_struct_DepositData(value, pos)\n    {\n        mstore(pos, mload(value))\n        let memberValue0 := mload(add(value, 0x20))\n        let _1 := 0xffffffffffffffff\n        mstore(add(pos, 0x20), and(memberValue0, _1))\n        let memberValue0_1 := mload(add(value, 0x40))\n        let _2 := sub(shl(160, 1), 1)\n        mstore(add(pos, 0x40), and(memberValue0_1, _2))\n        mstore(add(pos, 0x60), and(mload(add(value, 0x60)), _2))\n        mstore(add(pos, 0x80), mload(add(value, 0x80)))\n        mstore(add(pos, 0xa0), and(mload(add(value, 0xa0)), _1))\n        mstore(add(pos, 0xc0), and(mload(add(value, 0xc0)), _1))\n        mstore(add(pos, 0xe0), and(mload(add(value, 0xe0)), 0xffffffff))\n    }\n    function abi_encode_struct_RelayData(value, pos)\n    {\n        let _1 := mload(value)\n        if iszero(lt(_1, 3))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x21)\n            revert(0, 0x24)\n        }\n        mstore(pos, _1)\n        mstore(add(pos, 0x20), and(mload(add(value, 0x20)), sub(shl(160, 1), 1)))\n        let memberValue0 := mload(add(value, 0x40))\n        abi_encode_uint32(memberValue0, add(pos, 0x40))\n        let memberValue0_1 := mload(add(value, 0x60))\n        abi_encode_uint64(memberValue0_1, add(pos, 0x60))\n        let memberValue0_2 := mload(add(value, 0x80))\n        abi_encode_uint32(memberValue0_2, add(pos, 0x80))\n        mstore(add(pos, 0xa0), mload(add(value, 0xa0)))\n        mstore(add(pos, 0xc0), mload(add(value, 0xc0)))\n    }\n    function abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__to_t_struct$_DepositData_$3936_memory_ptr_t_struct$_RelayData_$3952_memory_ptr_t_bytes32__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 512)\n        abi_encode_struct_DepositData(value0, headStart)\n        abi_encode_struct_RelayData(value1, add(headStart, 256))\n        mstore(add(headStart, 480), value2)\n    }\n    function abi_encode_tuple_t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds a\")\n        mstore(add(headStart, 96), \"llowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_decode_tuple_t_uint64_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint64(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_uint32(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_c8ab8a2be779d9262c8a9592ba3da06668869724ea761c2b8bed96453f72b21e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 15)\n        mstore(add(headStart, 64), \"Already settled\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint32(x, y) -> sum\n    {\n        let _1 := 0xffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function abi_encode_tuple_t_stringliteral_343ea3fc08d6a86d9bb33bff5b89a4880beb2877c0758a5b9d28acf6f4331668__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Not settleable yet\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9c5c2898dfaf68f9d9f7da005f4e14e47b970b541fdaa53f62f755602f65f784__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"Not slow relayer\")\n        tail := add(headStart, 96)\n    }\n    function checked_add_t_uint64(x, y) -> sum\n    {\n        let _1 := 0xffffffffffffffff\n        let x_1 := and(x, _1)\n        let y_1 := and(y, _1)\n        if gt(x_1, sub(_1, y_1)) { panic_error_0x11() }\n        sum := add(x_1, y_1)\n    }\n    function checked_add_t_int256(x, y) -> sum\n    {\n        let _1 := slt(x, 0)\n        if and(iszero(_1), sgt(y, sub(sub(shl(255, 1), 1), x))) { panic_error_0x11() }\n        if and(_1, slt(y, sub(shl(255, 1), x))) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_struct$_RelayData_$3952_memory_ptr__to_t_struct$_RelayData_$3952_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 224)\n        abi_encode_struct_RelayData(value0, headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_6d85c5f14fef91ee2d1e97a9ebbeb17234c6f1697165e89e66564bef6d66742d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Cant send eth\")\n        tail := add(headStart, 96)\n    }\n    function checked_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function checked_div_t_uint256(x, y) -> r\n    {\n        if iszero(y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x12)\n            revert(0, 0x24)\n        }\n        r := div(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_014e645e7f8031a206f3b5a5e54294e512399b30b942040cdefea4c386ac4c2c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Utilization too high to remove\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1b9adfacf0e3713528db5d163499daffed51d205d476d1216aa03b51e5246b78__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Bad add liquidity Eth value\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 23)\n        mstore(add(headStart, 64), \"Relay cannot be sped up\")\n        tail := add(headStart, 96)\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_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: decreased allowance below\")\n        mstore(add(headStart, 96), \" zero\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 27)\n        mstore(add(headStart, 64), \"Only multicall with 0 value\")\n        tail := add(headStart, 96)\n    }\n    function panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function access_calldata_tail_t_bytes_calldata_ptr(base_ref, ptr_to_tail) -> addr, length\n    {\n        let rel_offset_of_tail := calldataload(ptr_to_tail)\n        if iszero(slt(rel_offset_of_tail, add(sub(calldatasize(), base_ref), not(30)))) { revert(0, 0) }\n        let addr_1 := add(base_ref, rel_offset_of_tail)\n        length := calldataload(addr_1)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        addr := add(addr_1, 0x20)\n        if sgt(addr, sub(calldatasize(), length)) { revert(0, 0) }\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := mload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        copy_memory_to_memory(add(_2, 32), add(memPtr, 32), _3)\n        value0 := memPtr\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0)) { panic_error_0x11() }\n        ret := add(value, 1)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_struct$_Unsigned_$1955_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 32)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, mload(headStart))\n        value0 := memPtr\n    }\n    function abi_encode_tuple_t_stringliteral_21c11d76539f521406afa6465d19dbc68951b755ccb3b86b975cbdb7c85590e0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Past liveness\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6e21cb62d00f42c575e706905a321dbe03b2d3e18c1a8cd6dde1b236d44f9cb5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Not disputable\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ReentrancyGuard: reentrant call\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC20: approve from the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: approve to the zero addre\")\n        mstore(add(headStart, 96), \"ss\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 288)\n        abi_encode_struct_DepositData(value0, headStart)\n        mstore(add(headStart, 256), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__to_t_struct$_DepositData_$3936_memory_ptr_t_uint32_t_uint64_t_address__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 352)\n        abi_encode_struct_DepositData(value0, headStart)\n        mstore(add(headStart, 256), and(value1, 0xffffffff))\n        mstore(add(headStart, 288), and(value2, 0xffffffffffffffff))\n        mstore(add(headStart, 320), and(value3, sub(shl(160, 1), 1)))\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_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC20: transfer from the zero ad\")\n        mstore(add(headStart, 96), \"dress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 35)\n        mstore(add(headStart, 64), \"ERC20: transfer to the zero addr\")\n        mstore(add(headStart, 96), \"ess\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"ERC20: transfer amount exceeds b\")\n        mstore(add(headStart, 96), \"alance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_140eb91724df70a0cee818ba517cecd0d75a058e9680b55981a9187bd7c49aba__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), \"Hashed relay params do not match\")\n        mstore(add(headStart, 96), \" existing relay hash for deposit\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint64__to_t_bytes32_t_uint64__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffff))\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 checked_sub_t_int256(x, y) -> diff\n    {\n        let _1 := slt(y, 0)\n        if and(iszero(_1), slt(x, add(shl(255, 1), y))) { panic_error_0x11() }\n        if and(_1, sgt(x, add(sub(shl(255, 1), 1), y))) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC20: burn from the zero addres\")\n        mstore(add(headStart, 96), \"s\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 34)\n        mstore(add(headStart, 64), \"ERC20: burn amount exceeds balan\")\n        mstore(add(headStart, 96), \"ce\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"ERC20: mint to the zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_contract$_IERC20_$584_t_rational_0_by_1_t_uint256_t_uint32_t_address_t_int256__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_address_t_uint256_t_uint256_t_uint256_t_address_t_int256__fromStack_reversed(headStart, value8, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 288\n        mstore(headStart, value0)\n        let _2 := 0xffffffff\n        mstore(add(headStart, 32), and(value1, _2))\n        mstore(add(headStart, 64), _1)\n        tail := abi_encode_string(value2, add(headStart, _1))\n        let _3 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 96), and(value3, _3))\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n        mstore(add(headStart, 192), and(value6, _2))\n        mstore(add(headStart, 224), and(value7, _3))\n        mstore(add(headStart, 256), value8)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__to_t_bytes32_t_uint32_t_bytes_memory_ptr_t_struct$_Request_$6460_memory_ptr_t_address_t_address__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 512\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffff))\n        mstore(add(headStart, 64), _1)\n        tail := abi_encode_string(value2, add(headStart, _1))\n        abi_encode_address(mload(value3), add(headStart, 96))\n        let memberValue0 := mload(add(value3, 32))\n        abi_encode_address(memberValue0, add(headStart, 128))\n        let memberValue0_1 := mload(add(value3, 64))\n        abi_encode_address(memberValue0_1, add(headStart, 160))\n        let memberValue0_2 := mload(add(value3, 96))\n        abi_encode_bool(memberValue0_2, add(headStart, 192))\n        mstore(add(headStart, 224), mload(add(value3, 128)))\n        let _2 := mload(add(value3, 160))\n        let _3 := 256\n        mstore(add(headStart, _3), _2)\n        let _4 := mload(add(value3, 192))\n        let _5 := 288\n        mstore(add(headStart, _5), _4)\n        let _6 := mload(add(value3, 224))\n        let _7 := 320\n        mstore(add(headStart, _7), _6)\n        mstore(add(headStart, 352), mload(add(value3, _3)))\n        mstore(add(headStart, 384), mload(add(value3, _5)))\n        mstore(add(headStart, 416), mload(add(value3, _7)))\n        abi_encode_address(value4, add(headStart, 448))\n        abi_encode_address(value5, add(headStart, 480))\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bool(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"SafeERC20: ERC20 operation did n\")\n        mstore(add(headStart, 96), \"ot succeed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory(add(value1, 0x20), end_1, length_1)\n        let end_2 := add(end_1, length_1)\n        let length_2 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), end_2, length_2)\n        end := add(end_2, length_2)\n    }\n    function abi_encode_tuple_t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 54)\n        mstore(add(headStart, 64), \"SafeERC20: approve from non-zero\")\n        mstore(add(headStart, 96), \" to non-zero allowance\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_string_memory_ptr_t_bytes_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, \",\")\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), add(pos, 1), length)\n        let _1 := add(pos, length)\n        mstore(add(_1, 1), \":\")\n        end := add(_1, 2)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c__to_t_bytes_memory_ptr_t_string_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        let end_1 := add(pos, length)\n        mstore(end_1, \":\")\n        end := add(end_1, 1)\n    }\n    function abi_encode_tuple_packed_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        mstore(pos, value0)\n        mstore(add(pos, 32), value1)\n        end := add(pos, 64)\n    }\n    function abi_encode_tuple_t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"Address: insufficient balance fo\")\n        mstore(add(headStart, 96), \"r call\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\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}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "60806040526004361061031e5760003560e01c806370a08231116101ab578063b5351ee2116100f7578063cefed55f11610095578063df738fc81161006f578063df738fc814610978578063ed4de3a3146109a5578063f1d24bab146109da578063fff6cae9146109fe57600080fd5b8063cefed55f146108ee578063d412f5a41461090e578063dd62ed3e1461093257600080fd5b8063bec73ade116100d1578063bec73ade14610868578063c01e1bd614610888578063c73a32c3146108ad578063cc2c929e146108d457600080fd5b8063b5351ee21461081f578063bd6d894d14610834578063be0ba1221461084957600080fd5b8063975057e711610164578063a9059cbb1161013e578063a9059cbb14610793578063ac9650d8146107b3578063b2084202146107d3578063b454e326146107e957600080fd5b8063975057e714610733578063a457c2d714610753578063a6af2dfe1461077357600080fd5b806370a082311461067c578063753b91bb146106b25780637998a1c4146106d257806387a515d3146106e85780638f283970146106fe57806395d89b411461071e57600080fd5b806323b872dd1161026a5780633fa856c91161022357806351c6590a116101fd57806351c6590a1461061e5780635df45a371461063157806362822d341461064657806366db52401461066657600080fd5b80633fa856c9146105c85780634464fae4146105e85780634f52fd17146105fe57600080fd5b806323b872dd1461052457806327f224ca1461054457806329cb924d14610564578063313ce5671461057757806339509351146105935780633cc400b3146105b357600080fd5b8063173684c5116102d75780631bf71c38116102b15780631bf71c381461048c5780631c39c38d146104ac57806322302922146104e457806322f8e5661461050457600080fd5b8063173684c51461042957806318160ddd1461046257806319e9d8941461047757600080fd5b806306fdde031461032a57806308ed5b1414610355578063095ea7b31461037757806311cfc159146103a757806313111725146103e5578063135c404e1461040557600080fd5b3661032557005b600080fd5b34801561033657600080fd5b5061033f610a13565b60405161034c9190613d90565b60405180910390f35b34801561036157600080fd5b50610375610370366004613db1565b610aa5565b005b34801561038357600080fd5b50610397610392366004613dee565b610b44565b604051901515815260200161034c565b3480156103b357600080fd5b50600a546103cd906201000090046001600160401b031681565b6040516001600160401b03909116815260200161034c565b3480156103f157600080fd5b50610375610400366004613f53565b610b5b565b34801561041157600080fd5b5061041b600d5481565b60405190815260200161034c565b34801561043557600080fd5b50600a5461044d90600160b01b900463ffffffff1681565b60405163ffffffff909116815260200161034c565b34801561046e57600080fd5b5060035461041b565b34801561048357600080fd5b5061041b610e95565b34801561049857600080fd5b5061033f6104a7366004613f8d565b610ebe565b3480156104b857600080fd5b506000546104cc906001600160a01b031681565b6040516001600160a01b03909116815260200161034c565b3480156104f057600080fd5b506010546104cc906001600160a01b031681565b34801561051057600080fd5b5061037561051f366004614044565b610ee1565b34801561053057600080fd5b5061039761053f36600461405d565b610f57565b34801561055057600080fd5b5061037561055f36600461409e565b611008565b34801561057057600080fd5b504261041b565b34801561058357600080fd5b506040516012815260200161034c565b34801561059f57600080fd5b506103976105ae366004613dee565b61109e565b3480156105bf57600080fd5b506103756110d5565b3480156105d457600080fd5b506103756105e3366004613f8d565b6112ca565b3480156105f457600080fd5b5061041b600c5481565b34801561060a57600080fd5b506103756106193660046140bb565b611727565b61037561062c366004614044565b6118a0565b34801561063d57600080fd5b5061041b611a44565b34801561065257600080fd5b5061041b610661366004614044565b611a5b565b34801561067257600080fd5b5061041b60085481565b34801561068857600080fd5b5061041b6106973660046140e0565b6001600160a01b031660009081526001602052604090205490565b3480156106be57600080fd5b506103756106cd366004613f53565b611a85565b3480156106de57600080fd5b5061041b60115481565b3480156106f457600080fd5b5061041b60095481565b34801561070a57600080fd5b506103756107193660046140e0565b611f21565b34801561072a57600080fd5b5061033f611fb0565b34801561073f57600080fd5b50600f546104cc906001600160a01b031681565b34801561075f57600080fd5b5061039761076e366004613dee565b611fbf565b34801561077f57600080fd5b50600e546104cc906001600160a01b031681565b34801561079f57600080fd5b506103976107ae366004613dee565b61205a565b6107c66107c13660046140fd565b612067565b60405161034c9190614171565b3480156107df57600080fd5b5061041b60075481565b3480156107f557600080fd5b506104cc610804366004614044565b6013602052600090815260409020546001600160a01b031681565b34801561082b57600080fd5b5061037561220c565b34801561084057600080fd5b5061041b612464565b34801561085557600080fd5b50600a5461039790610100900460ff1681565b34801561087457600080fd5b50610375610883366004613f8d565b61247e565b34801561089457600080fd5b506006546104cc9061010090046001600160a01b031681565b3480156108b957600080fd5b50600a546103cd90600160701b90046001600160401b031681565b3480156108e057600080fd5b50600a546103979060ff1681565b3480156108fa57600080fd5b50610375610909366004613f8d565b61266b565b34801561091a57600080fd5b5060065461044d90600160a81b900463ffffffff1681565b34801561093e57600080fd5b5061041b61094d3660046141d3565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561098457600080fd5b5061041b610993366004614044565b60126020526000908152604090205481565b3480156109b157600080fd5b506109c56109c0366004614044565b612851565b6040805192835260208301919091520161034c565b3480156109e657600080fd5b50600a5461044d90600160501b900463ffffffff1681565b348015610a0a57600080fd5b50610375612888565b606060048054610a2290614201565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4e90614201565b8015610a9b5780601f10610a7057610100808354040283529160200191610a9b565b820191906000526020600020905b815481529060010190602001808311610a7e57829003601f168201915b5050505050905090565b600e546001600160a01b03163314610ad85760405162461bcd60e51b8152600401610acf9061423c565b60405180910390fd5b610ae06128a8565b610ae86128fa565b600a80548215156101000261ff00199091161790556040517f1d492b98217ff50d005c548e0fa3a96dc38b2bafccaf5baedf42c112bd39fdfb90610b3190831515815260200190565b60405180910390a1610b41612906565b50565b6000610b51338484612915565b5060015b92915050565b600a54610100900460ff16610ba85760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610acf565b610bb06128a8565b610bb86128fa565b6703782dace9d900008260a001516001600160401b031611158015610bf257506703782dace9d900008260c001516001600160401b031611155b8015610c0f57506706f05b59d3b20000816001600160401b031611155b610c4a5760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610acf565b6000610c5583612a3a565b60008181526012602052604090205490915015610cab5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610acf565b60004290506000610cbf8560800151612a7d565b905060006040518060e0016040528060016002811115610ce157610ce1614273565b815233602082015260068054604090920191600160a81b900463ffffffff16906015610d0c8361429f565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018463ffffffff168152602001838152602001600b548152509050610d6781612a9d565b600085815260126020526040812091909155610d838783612ab0565b90508660800151600954600754610d9a91906142c3565b1015610de45760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610acf565b6000600b5484610df491906142da565b9050876080015160096000828254610e0c91906142da565b9250508190555080600d6000828254610e2591906142da565b9091555050600654610e479061010090046001600160a01b0316333084612b04565b857fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be0898585604051610e7b939291906143fc565b60405180910390a2505050505050610e91612906565b5050565b6000610e9f6128a8565b610ea76128fa565b610eb16000612b75565b9050610ebb612906565b90565b6060610ec86128a8565b610eda610ed58484612ab0565b612c03565b9392505050565b6000546001600160a01b0316610ef657600080fd5b60005460405163117c72b360e11b8152600481018390526001600160a01b03909116906322f8e56690602401600060405180830381600087803b158015610f3c57600080fd5b505af1158015610f50573d6000803e3d6000fd5b5050505050565b6000610f64848484612c40565b6001600160a01b038416600090815260026020908152604080832033845290915290205482811015610fe95760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610acf565b610ffd8533610ff886856142c3565b612915565b506001949350505050565b600e546001600160a01b031633146110325760405162461bcd60e51b8152600401610acf9061423c565b61103a6128a8565b6110426128fa565b600a805469ffffffffffffffff00001916620100006001600160401b038481168202929092179283905560405192041681527f958b6b3e25d854f9e658cd5610bd9d184123d203f58f95adf261e0d7d0dd65a590602001610b31565b3360008181526002602090815260408083206001600160a01b03871684529091528120549091610b51918590610ff89086906142da565b6110dd6128a8565b6110e56128fa565b600e60009054906101000a90046001600160a01b03166001600160a01b031663c73a32c36040518163ffffffff1660e01b815260040160206040518083038186803b15801561113357600080fd5b505afa158015611147573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116b9190614428565b600a600e6101000a8154816001600160401b0302191690836001600160401b03160217905550600e60009054906101000a90046001600160a01b03166001600160a01b031663173684c56040518163ffffffff1660e01b815260040160206040518083038186803b1580156111df57600080fd5b505afa1580156111f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112179190614445565b600a60166101000a81548163ffffffff021916908363ffffffff160217905550600e60009054906101000a90046001600160a01b03166001600160a01b0316637998a1c46040518163ffffffff1660e01b815260040160206040518083038186803b15801561128557600080fd5b505afa158015611299573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bd9190614462565b6011556112c8612906565b565b6112d26128a8565b6112da6128fa565b60006112e583612a3a565b90506112f18183612e18565b60018251600281111561130657611306614273565b146113455760405162461bcd60e51b815260206004820152600f60248201526e105b1c9958591e481cd95d1d1b1959608a1b6044820152606401610acf565b6000600a60169054906101000a900463ffffffff168360800151611369919061447b565b9050428163ffffffff1611156113b65760405162461bcd60e51b8152602060048201526012602482015271139bdd081cd95d1d1b1958589b19481e595d60721b6044820152606401610acf565b82602001516001600160a01b0316336001600160a01b031614806113ea57506113e18161038461447b565b63ffffffff1642115b6114295760405162461bcd60e51b815260206004820152601060248201526f2737ba1039b637bb903932b630bcb2b960811b6044820152606401610acf565b6040805160e0810190915261149d90806002815260200185602001516001600160a01b03168152602001856040015163ffffffff16815260200185606001516001600160401b03168152602001856080015163ffffffff1681526020018560a0015181526020018560c00151815250612a9d565b60008381526012602052604081209190915560a085015160608501516114d0916114c6916144a3565b8660800151612ea5565b85608001516114df91906142c3565b905060006114ed8486612ecd565b600081815260136020526040902054600a549192506001600160a01b03169060ff16801561152257506001600160a01b038116155b1561153a57611535876040015184612ef8565b61156f565b61156f6001600160a01b038216611555578760400151611557565b815b60065461010090046001600160a01b03169085612fc1565b60006115838860a001518960800151612ea5565b905060008760a001518860c0015161159b91906142da565b60208901519091506001600160a01b03163314156115e35760208801516115de906115c683856142da565b60065461010090046001600160a01b03169190612fc1565b611621565b6020880151600654611605916101009091046001600160a01b03169083612fc1565b6006546116219061010090046001600160a01b03163384612fc1565b600061162d83876142da565b905089608001516009600082825461164591906142c3565b92505081905550806007600082825461165e91906142c3565b92505081905550806008600082825461167791906144c5565b9250508190555081600d600082825461169091906142c3565b9091555061169e9050612ff1565b6116b86116b38a606001518c60800151612ea5565b61302f565b336001600160a01b0316887fcfdda74fce9fedb259e0f0a1ab1550e19b338488ece64976a4639e7fce0293a78b6040516116f29190614506565b60405180910390a350505060009182525060136020526040902080546001600160a01b031916905550610e9191506129069050565b61172f6128a8565b6117376128fa565b8015806117465750600a5460ff165b6117825760405162461bcd60e51b815260206004820152600d60248201526c086c2dce840e6cadcc840cae8d609b1b6044820152606401610acf565b6000670de0b6b3a7640000611795613062565b61179f9085614514565b6117a99190614549565b9050806009546117b991906142da565b600754101561180a5760405162461bcd60e51b815260206004820152601e60248201527f5574696c697a6174696f6e20746f6f206869676820746f2072656d6f766500006044820152606401610acf565b61181433846130da565b806007600082825461182691906142c3565b909155505081156118405761183b3382612ef8565b61185c565b60065461185c9061010090046001600160a01b03163383612fc1565b604080518281526020810185905233917f0c54fc223ffd1a8f36652b5e83db4fff50f5ae151b11ceb56d5499b9f6e1fa18910160405180910390a250610e91612906565b6118a86128a8565b6118b06128fa565b600a5460ff1680156118c157508034145b806118ca575034155b6119165760405162461bcd60e51b815260206004820152601b60248201527f42616420616464206c6971756964697479204574682076616c756500000000006044820152606401610acf565b6000611920613062565b61193283670de0b6b3a7640000614514565b61193c9190614549565b90506119483382613229565b816007600082825461195a91906142da565b909155505034158015906119705750600a5460ff165b156119e357600660019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5050505050611a00565b600654611a009061010090046001600160a01b0316333085612b04565b604080518381526020810183905233917f0351f600ef1e31e5e13b4dc27bff4cbde3e9269f0ffc666629ae6cac573eb220910160405180910390a250610b41612906565b6000611a4e6128a8565b611a56613308565b905090565b6000611a656128a8565b611a6d6128fa565b611a7682612b75565b9050611a80612906565b919050565b600a54610100900460ff16611ad25760405162461bcd60e51b815260206004820152601360248201527214995b185e5cc8185c9948191a5cd8589b1959606a1b6044820152606401610acf565b611ada6128a8565b611ae26128fa565b60004290506703782dace9d900008360a001516001600160401b031611158015611b2157506703782dace9d900008360c001516001600160401b031611155b8015611b3e57506706f05b59d3b20000826001600160401b031611155b611b795760405162461bcd60e51b815260206004820152600c60248201526b496e76616c6964206665657360a01b6044820152606401610acf565b6000611b8484612a3a565b60008181526012602052604090205490915015611bda5760405162461bcd60e51b815260206004820152601460248201527350656e64696e672072656c61792065786973747360601b6044820152606401610acf565b6000611be98560800151612a7d565b905060006040518060e0016040528060016002811115611c0b57611c0b614273565b815233602082015260068054604090920191600160a81b900463ffffffff16906015611c368361429f565b91906101000a81548163ffffffff021916908363ffffffff16021790555063ffffffff168152602001866001600160401b031681526020018563ffffffff168152602001838152602001600b5481525090506000611c948783612ab0565b9050611c9f82612a9d565b600085815260126020526040812091909155611cbb8584612ecd565b6000818152601360205260409020549091506001600160a01b031615611d1d5760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610acf565b8760800151600954600754611d3291906142c3565b1015611d7c5760405162461bcd60e51b8152602060048201526019602482015278496e73756666696369656e7420706f6f6c2062616c616e636560381b6044820152606401610acf565b6000600b5485611d8c91906142da565b90506000611dc08a60c001518b60a001518760600151611dac91906144a3565b611db691906144a3565b8b60800151612ea5565b90506000818b60800151611dd491906142c3565b905082600d6000828254611de891906142da565b909155505060808b015160098054600090611e049084906142da565b9091555050600084815260136020526040902080546001600160a01b03191633908117909155611e529030611e3986856142da565b60065461010090046001600160a01b0316929190612b04565b600a5460ff1615611e7057611e6b8b6040015182612ef8565b611e92565b60408b0151600654611e92916101009091046001600160a01b03169083612fc1565b877fa4ca36d112520cced74325c72711f376fe4015665829d879ba21590cb8130be08c8888604051611ec6939291906143fc565b60405180910390a2336001600160a01b0316887ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b88604051611f089190614506565b60405180910390a3505050505050505050610e91612906565b600e546001600160a01b03163314611f4b5760405162461bcd60e51b8152600401610acf9061423c565b611f536128a8565b611f5b6128fa565b600e80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527f485a12424bd0c2c66a131c2681cb6c743b9573af3ae5f3014ef6ce7f55ab01929101610b31565b606060058054610a2290614201565b3360009081526002602090815260408083206001600160a01b0386168452909152812054828110156120415760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610acf565b6120503385610ff886856142c3565b5060019392505050565b6000610b51338484612c40565b606034156120b75760405162461bcd60e51b815260206004820152601b60248201527f4f6e6c79206d756c746963616c6c207769746820302076616c756500000000006044820152606401610acf565b816001600160401b038111156120cf576120cf613e1a565b60405190808252806020026020018201604052801561210257816020015b60608152602001906001900390816120ed5790505b50905060005b8281101561220557600080308686858181106121265761212661456b565b90506020028101906121389190614581565b6040516121469291906145ce565b600060405180830381855af49150503d8060008114612181576040519150601f19603f3d011682016040523d82523d6000602084013e612186565b606091505b5091509150816121d25760448151101561219f57600080fd5b600481019050808060200190518101906121b991906145de565b60405162461bcd60e51b8152600401610acf9190613d90565b808484815181106121e5576121e561456b565b6020026020010181905250505080806121fd9061467f565b915050612108565b5092915050565b6122146128a8565b61221c6128fa565b600e5460408051632e68f21360e21b815290516000926001600160a01b03169163b9a3c84c916004808301926020929190829003018186803b15801561226157600080fd5b505afa158015612275573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612299919061469a565b6040516302abf57960e61b815275536b696e6e794f7074696d69737469634f7261636c6560501b60048201529091506001600160a01b0382169063aafd5e409060240160206040518083038186803b1580156122f457600080fd5b505afa158015612308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061232c919061469a565b601080546001600160a01b0319166001600160a01b039283161790556040516302abf57960e61b81526453746f726560d81b60048201529082169063aafd5e409060240160206040518083038186803b15801561238857600080fd5b505afa15801561239c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123c0919061469a565b600f80546001600160a01b0319166001600160a01b03928316908117909155600654604051635b97aadd60e01b8152610100909104909216600483015290635b97aadd9060240160206040518083038186803b15801561241f57600080fd5b505afa158015612433573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245791906146b7565b51600b55506112c8612906565b600061246e6128a8565b6124766128fa565b610eb1613062565b6124866128a8565b61248e6128fa565b600061249983612a3a565b90506124a58183612e18565b60006124b18284612ecd565b9050600a60169054906101000a900463ffffffff1683608001516124d5919061447b565b63ffffffff16421080156124fb57506001835160028111156124f9576124f9614273565b145b801561251c57506000818152601360205260409020546001600160a01b0316155b6125625760405162461bcd60e51b8152602060048201526017602482015276052656c61792063616e6e6f74206265207370656420757604c1b6044820152606401610acf565b600081815260136020526040812080546001600160a01b0319163317905560c085015160a086015160608601516125a7929161259d916144a3565b6114c691906144a3565b905060008186608001516125bb91906142c3565b600a5490915060ff16156125f9576006546125e69061010090046001600160a01b0316333084612b04565b6125f4866040015182612ef8565b61261d565b604086015160065461261d916101009091046001600160a01b031690339084612b04565b336001600160a01b0316847ff98cddc88bc965917007822b05056cb92bc9ddf0f8bcc61678400cb78313bb4b876040516126579190614506565b60405180910390a350505050610e91612906565b6126736128a8565b61267b6128fa565b42600a54608083015161269b91600160b01b900463ffffffff169061447b565b63ffffffff16116126de5760405162461bcd60e51b815260206004820152600d60248201526c50617374206c6976656e65737360981b6044820152606401610acf565b6001815160028111156126f3576126f3614273565b146127315760405162461bcd60e51b815260206004820152600e60248201526d4e6f742064697370757461626c6560901b6044820152606401610acf565b600061273c83612a3a565b90506127488183612e18565b60006127548484612ab0565b905060006127798460200151338660a001518760c0015161277487612c03565b613378565b90508360a001518460c0015161278f91906142da565b600d60008282546127a091906142c3565b90915550506080850151600980546000906127bc9084906142c3565b9091555050600083815260126020526040812055801561281057336127e085612a9d565b60405185907f29751133c2d0a0ea7a9da312248b12ef10ac4c20f4e3ab5eebbb80d853b3836790600090a4612846565b3361281a85612a9d565b60405185907f14173c4d3bd95e34f5c8f78729323444c9272bd21051e70045b64ed48f65818390600090a45b505050610e91612906565b60008061285c6128a8565b6128646128fa565b61286e6000612b75565b61287784612b75565b91509150612883612906565b915091565b6128906128a8565b6128986128fa565b6128a061369d565b6112c8612906565b60065460ff166112c85760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610acf565b6006805460ff19169055565b6006805460ff19166001179055565b6001600160a01b0383166129775760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610acf565b6001600160a01b0382166129d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610acf565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600654604051600091612a6091849161010090046001600160a01b0316906020016146f8565b604051602081830303815290604052805190602001209050919050565b600a54600090610b5590600160701b90046001600160401b031683612ea5565b600081604051602001612a609190614506565b60008282604001518360600151600660019054906101000a90046001600160a01b0316604051602001612ae69493929190614720565b60405160208183030381529060405280519060200120905092915050565b6040516001600160a01b0380851660248301528316604482015260648101829052612b6f9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613760565b50505050565b6000612b7f61369d565b60008060085413612b91576000612b95565b6008545b905060008160095485612ba891906142da565b612bb291906142da565b9050600082600754612bc491906142da565b905080612bdd5750670de0b6b3a7640000949350505050565b80612bf083670de0b6b3a7640000614514565b612bfa9190614549565b95945050505050565b6060610b5560405180602001604052806000815250604051806040016040528060098152602001680e4cad8c2f290c2e6d60bb1b81525084613832565b6001600160a01b038316612ca45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acf565b6001600160a01b038216612d065760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acf565b6001600160a01b03831660009081526001602052604090205481811015612d7e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610acf565b612d8882826142c3565b6001600160a01b038086166000908152600160205260408082209390935590851681529081208054849290612dbe9084906142da565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e0a91815260200190565b60405180910390a350505050565b612e2181612a9d565b60008381526012602052604090205414610e91576040805162461bcd60e51b81526020600482015260248101919091527f4861736865642072656c617920706172616d7320646f206e6f74206d6174636860448201527f206578697374696e672072656c6179206861736820666f72206465706f7369746064820152608401610acf565b6000670de0b6b3a7640000612ec3836001600160401b038616614514565b610eda9190614549565b6000828260600151604051602001612ae69291909182526001600160401b0316602082015260400190565b6001600160a01b0382163b15612f2457600654610e919061010090046001600160a01b03168383612fc1565b600654604051632e1a7d4d60e01b8152600481018390526101009091046001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015612f6e57600080fd5b505af1158015612f82573d6000803e3d6000fd5b50506040516001600160a01b038516925083156108fc02915083906000818181858888f19350505050158015612fbc573d6000803e3d6000fd5b505050565b6040516001600160a01b038316602482015260448101829052612fbc90849063a9059cbb60e01b90606401612b38565b6000612ffb613308565b905080600c5461300b91906142c3565b600c5550600a805463ffffffff60501b1916600160501b4263ffffffff1602179055565b80600c600082825461304191906142da565b92505081905550806008600082825461305a91906144c5565b909155505050565b600061306d60035490565b61307e5750670de0b6b3a764000090565b613086612ff1565b61308e61369d565b6000600c546008546007546130a391906144c5565b6130ad9190614765565b90506130b860035490565b6130ca82670de0b6b3a7640000614514565b6130d49190614549565b91505090565b6001600160a01b03821661313a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610acf565b6001600160a01b038216600090815260016020526040902054818110156131ae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610acf565b6131b882826142c3565b6001600160a01b038416600090815260016020526040812091909155600380548492906131e69084906142c3565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612a2d565b6001600160a01b03821661327f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610acf565b806003600082825461329191906142da565b90915550506001600160a01b038216600090815260016020526040812080548392906132be9084906142da565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600a546000908190670de0b6b3a764000090600160501b900463ffffffff164261333291906142c3565b600a54600c54613351916201000090046001600160401b031690614514565b61335b9190614514565b6133659190614549565b9050600c548110611a8057600c546130d4565b60008061338585856142da565b6010546006549192506133aa9161010090046001600160a01b03908116911683613878565b6010546011546001600160a01b039091169063af355d1e904286600660019054906101000a90046001600160a01b031660008b600a60169054906101000a900463ffffffff168f670de0b6b3a76400006040518a63ffffffff1660e01b815260040161341e999897969594939291906147a4565b602060405180830381600087803b15801561343857600080fd5b505af1925050508015613468575060408051601f3d908101601f1916820190925261346591810190614462565b60015b6134b5576006546134889061010090046001600160a01b03168883612fc1565b6010546006546134ab916001600160a01b03610100909204821691166000613878565b6000915050612bfa565b818110156135105760006134c982846142c3565b6006549091506134e89061010090046001600160a01b03168a83612fc1565b60105460065461350b916001600160a01b03610100909204821691166000613878565b819250505b5060408051610160810182526001600160a01b03898116825260006020830181905260065461010090049091169282019290925260608101829052670de0b6b3a7640000608082015260a08101829052600a5460c0820190600160b01b900463ffffffff164261358091906142da565b81526000602082015260400161359688856142c3565b815260208101889052600a54600160b01b900463ffffffff9081166040909201919091526006549192506135df9161010090046001600160a01b031690339030908690612b0416565b601054600654613601916001600160a01b036101009092048216911684613878565b60105460115460405163139c641960e31b81526001600160a01b0390921691639ce320c89161363c914290899087908e90309060040161480f565b602060405180830381600087803b15801561365657600080fd5b505af115801561366a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368e9190614462565b50600198975050505050505050565b600d546006546040516370a0823160e01b81523060048201526000929161010090046001600160a01b0316906370a082319060240160206040518083038186803b1580156136ea57600080fd5b505afa1580156136fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137229190614462565b61372c91906142c3565b9050600754811115610b415760075461374590826142c3565b600860008282546137569190614765565b9091555050600755565b60006137b5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661399c9092919063ffffffff16565b805190915015612fbc57808060200190518101906137d39190614908565b612fbc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610acf565b6060600061384085856139b3565b9050848161384d856139f5565b60405160200161385f93929190614925565b6040516020818303038152906040529150509392505050565b8015806139015750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e9060440160206040518083038186803b1580156138c757600080fd5b505afa1580156138db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138ff9190614462565b155b61396c5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610acf565b6040516001600160a01b038316602482015260448101829052612fbc90849063095ea7b360e01b90606401612b38565b60606139ab8484600085613a35565b949350505050565b8151606090156139e457816040516020016139ce9190614968565b6040516020818303038152906040529050610b55565b816040516020016139ce919061499c565b6060613a04608083901c613b5d565b613a0d83613b5d565b6040805160208101939093528201526060016040516020818303038152906040529050919050565b606082471015613a965760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610acf565b843b613ae45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610acf565b600080866001600160a01b03168587604051613b0091906149c1565b60006040518083038185875af1925050503d8060008114613b3d576040519150601f19603f3d011682016040523d82523d6000602084013e613b42565b606091505b5091509150613b52828286613cff565b979650505050505050565b6000808260001c9050806fffffffffffffffffffffffffffffffff169050806801000000000000000002811777ffffffffffffffff0000000000000000ffffffffffffffff169050806401000000000281177bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16905080620100000281177dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff169050806101000281177eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff1690508060100281177f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f16905060006008827f08080808080808080808080808080808080808080808080808080808080808081681613c8157613c81614533565b0460047f040404040404040404040404040404040404040404040404040404040404040484160460027f020202020202020202020202020202020202020202020202020202020202020285160417166027029091017f3030303030303030303030303030303030303030303030303030303030303030019392505050565b60608315613d0e575081610eda565b825115613d1e5782518084602001fd5b8160405162461bcd60e51b8152600401610acf9190613d90565b60005b83811015613d53578181015183820152602001613d3b565b83811115612b6f5750506000910152565b60008151808452613d7c816020860160208601613d38565b601f01601f19169290920160200192915050565b602081526000610eda6020830184613d64565b8015158114610b4157600080fd5b600060208284031215613dc357600080fd5b8135610eda81613da3565b6001600160a01b0381168114610b4157600080fd5b8035611a8081613dce565b60008060408385031215613e0157600080fd5b8235613e0c81613dce565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613e5257613e52613e1a565b60405290565b6001600160401b0381168114610b4157600080fd5b8035611a8081613e58565b63ffffffff81168114610b4157600080fd5b8035611a8081613e78565b6000610100808385031215613ea957600080fd5b604051908101906001600160401b0382118183101715613ecb57613ecb613e1a565b816040528092508335815260208401359150613ee682613e58565b816020820152613ef860408501613de3565b6040820152613f0960608501613de3565b606082015260808401356080820152613f2460a08501613e6d565b60a0820152613f3560c08501613e6d565b60c0820152613f4660e08501613e8a565b60e0820152505092915050565b6000806101208385031215613f6757600080fd5b613f718484613e95565b9150610100830135613f8281613e58565b809150509250929050565b6000808284036101e0811215613fa257600080fd5b613fac8585613e95565b925060e060ff1982011215613fc057600080fd5b50613fc9613e30565b61010084013560038110613fdc57600080fd5b8152613feb6101208501613de3565b6020820152613ffd6101408501613e8a565b604082015261400f6101608501613e6d565b60608201526140216101808501613e8a565b60808201526101a084013560a08201526101c09093013560c08401525092909150565b60006020828403121561405657600080fd5b5035919050565b60008060006060848603121561407257600080fd5b833561407d81613dce565b9250602084013561408d81613dce565b929592945050506040919091013590565b6000602082840312156140b057600080fd5b8135610eda81613e58565b600080604083850312156140ce57600080fd5b823591506020830135613f8281613da3565b6000602082840312156140f257600080fd5b8135610eda81613dce565b6000806020838503121561411057600080fd5b82356001600160401b038082111561412757600080fd5b818501915085601f83011261413b57600080fd5b81358181111561414a57600080fd5b8660208260051b850101111561415f57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156141c657603f198886030184526141b4858351613d64565b94509285019290850190600101614198565b5092979650505050505050565b600080604083850312156141e657600080fd5b82356141f181613dce565b91506020830135613f8281613dce565b600181811c9082168061421557607f821691505b6020821081141561423657634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f43616c6c6572206e6f74206272696467652061646d696e000000000000000000604082015260600190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818114156142b9576142b9614289565b6001019392505050565b6000828210156142d5576142d5614289565b500390565b600082198211156142ed576142ed614289565b500190565b8051825260208101516001600160401b0380821660208501526040830151915060018060a01b03808316604086015280606085015116606086015250608083015160808501528060a08401511660a08501528060c08401511660c0850152505063ffffffff60e08201511660e08301525050565b80516003811061438657634e487b7160e01b600052602160045260246000fd5b82526020818101516001600160a01b031690830152604080820151906143b39084018263ffffffff169052565b5060608101516143ce60608401826001600160401b03169052565b5060808101516143e6608084018263ffffffff169052565b5060a0818101519083015260c090810151910152565b610200810161440b82866142f2565b614419610100830185614366565b826101e0830152949350505050565b60006020828403121561443a57600080fd5b8151610eda81613e58565b60006020828403121561445757600080fd5b8151610eda81613e78565b60006020828403121561447457600080fd5b5051919050565b600063ffffffff80831681851680830382111561449a5761449a614289565b01949350505050565b60006001600160401b0380831681851680830382111561449a5761449a614289565b600080821280156001600160ff1b03849003851316156144e7576144e7614289565b600160ff1b839003841281161561450057614500614289565b50500190565b60e08101610b558284614366565b600081600019048311821515161561452e5761452e614289565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261456657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261459857600080fd5b8301803591506001600160401b038211156145b257600080fd5b6020019150368190038213156145c757600080fd5b9250929050565b8183823760009101908152919050565b6000602082840312156145f057600080fd5b81516001600160401b038082111561460757600080fd5b818401915084601f83011261461b57600080fd5b81518181111561462d5761462d613e1a565b604051601f8201601f19908116603f0116810190838211818310171561465557614655613e1a565b8160405282815287602084870101111561466e57600080fd5b613b52836020830160208801613d38565b600060001982141561469357614693614289565b5060010190565b6000602082840312156146ac57600080fd5b8151610eda81613dce565b6000602082840312156146c957600080fd5b604051602081018181106001600160401b03821117156146eb576146eb613e1a565b6040529151825250919050565b610120810161470782856142f2565b6001600160a01b03929092166101009190910152919050565b610160810161472f82876142f2565b63ffffffff949094166101008201526001600160401b03929092166101208301526001600160a01b031661014090910152919050565b60008083128015600160ff1b85018412161561478357614783614289565b6001600160ff1b038401831381161561479e5761479e614289565b50500390565b60006101208b835263ffffffff808c1660208501528160408501526147cb8285018c613d64565b6001600160a01b039a8b166060860152608085019990995260a084019790975250509290931660c083015290931660e0840152610100909201919091529392505050565b600061020088835263ffffffff8816602084015280604084015261483581840188613d64565b91505061484e6060830186516001600160a01b03169052565b60208501516001600160a01b03811660808401525060408501516001600160a01b03811660a084015250606085015180151560c084015250608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015161016087015281890151610180870152808901516101a0870152505050506148f36101c08301856001600160a01b03169052565b6001600160a01b0383166101e0830152613b52565b60006020828403121561491a57600080fd5b8151610eda81613da3565b60008451614937818460208901613d38565b84519083019061494b818360208901613d38565b845191019061495e818360208801613d38565b0195945050505050565b600b60fa1b815260008251614984816001850160208701613d38565b601d60f91b6001939091019283015250600201919050565b600082516149ae818460208701613d38565b601d60f91b920191825250600101919050565b600082516149d3818460208701613d38565b919091019291505056fea2646970667358221220c4b31e1ef9e4af0fa1497d6ce4afbdaab6148e447ddff6e73ffbd5b0e4aa00c664736f6c63430008090033",
                            "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x31E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x1AB JUMPI DUP1 PUSH4 0xB5351EE2 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xCEFED55F GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xDF738FC8 GT PUSH2 0x6F JUMPI DUP1 PUSH4 0xDF738FC8 EQ PUSH2 0x978 JUMPI DUP1 PUSH4 0xED4DE3A3 EQ PUSH2 0x9A5 JUMPI DUP1 PUSH4 0xF1D24BAB EQ PUSH2 0x9DA JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x9FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xCEFED55F EQ PUSH2 0x8EE JUMPI DUP1 PUSH4 0xD412F5A4 EQ PUSH2 0x90E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xBEC73ADE GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0xBEC73ADE EQ PUSH2 0x868 JUMPI DUP1 PUSH4 0xC01E1BD6 EQ PUSH2 0x888 JUMPI DUP1 PUSH4 0xC73A32C3 EQ PUSH2 0x8AD JUMPI DUP1 PUSH4 0xCC2C929E EQ PUSH2 0x8D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xB5351EE2 EQ PUSH2 0x81F JUMPI DUP1 PUSH4 0xBD6D894D EQ PUSH2 0x834 JUMPI DUP1 PUSH4 0xBE0BA122 EQ PUSH2 0x849 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x975057E7 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x13E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x793 JUMPI DUP1 PUSH4 0xAC9650D8 EQ PUSH2 0x7B3 JUMPI DUP1 PUSH4 0xB2084202 EQ PUSH2 0x7D3 JUMPI DUP1 PUSH4 0xB454E326 EQ PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x975057E7 EQ PUSH2 0x733 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x753 JUMPI DUP1 PUSH4 0xA6AF2DFE EQ PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x70A08231 EQ PUSH2 0x67C JUMPI DUP1 PUSH4 0x753B91BB EQ PUSH2 0x6B2 JUMPI DUP1 PUSH4 0x7998A1C4 EQ PUSH2 0x6D2 JUMPI DUP1 PUSH4 0x87A515D3 EQ PUSH2 0x6E8 JUMPI DUP1 PUSH4 0x8F283970 EQ PUSH2 0x6FE JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x71E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x26A JUMPI DUP1 PUSH4 0x3FA856C9 GT PUSH2 0x223 JUMPI DUP1 PUSH4 0x51C6590A GT PUSH2 0x1FD JUMPI DUP1 PUSH4 0x51C6590A EQ PUSH2 0x61E JUMPI DUP1 PUSH4 0x5DF45A37 EQ PUSH2 0x631 JUMPI DUP1 PUSH4 0x62822D34 EQ PUSH2 0x646 JUMPI DUP1 PUSH4 0x66DB5240 EQ PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x3FA856C9 EQ PUSH2 0x5C8 JUMPI DUP1 PUSH4 0x4464FAE4 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0x4F52FD17 EQ PUSH2 0x5FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x524 JUMPI DUP1 PUSH4 0x27F224CA EQ PUSH2 0x544 JUMPI DUP1 PUSH4 0x29CB924D EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x577 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x593 JUMPI DUP1 PUSH4 0x3CC400B3 EQ PUSH2 0x5B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x173684C5 GT PUSH2 0x2D7 JUMPI DUP1 PUSH4 0x1BF71C38 GT PUSH2 0x2B1 JUMPI DUP1 PUSH4 0x1BF71C38 EQ PUSH2 0x48C JUMPI DUP1 PUSH4 0x1C39C38D EQ PUSH2 0x4AC JUMPI DUP1 PUSH4 0x22302922 EQ PUSH2 0x4E4 JUMPI DUP1 PUSH4 0x22F8E566 EQ PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x173684C5 EQ PUSH2 0x429 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x462 JUMPI DUP1 PUSH4 0x19E9D894 EQ PUSH2 0x477 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x32A JUMPI DUP1 PUSH4 0x8ED5B14 EQ PUSH2 0x355 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x377 JUMPI DUP1 PUSH4 0x11CFC159 EQ PUSH2 0x3A7 JUMPI DUP1 PUSH4 0x13111725 EQ PUSH2 0x3E5 JUMPI DUP1 PUSH4 0x135C404E EQ PUSH2 0x405 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x325 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x336 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0xA13 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0x3D90 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x370 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DB1 JUMP JUMPDEST PUSH2 0xAA5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x383 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x392 CALLDATASIZE PUSH1 0x4 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0xB44 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x3CD SWAP1 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x400 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F53 JUMP JUMPDEST PUSH2 0xB5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x435 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3 SLOAD PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x483 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0xE95 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0x4A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8D JUMP JUMPDEST PUSH2 0xEBE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x10 SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x510 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x51F CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH2 0xEE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x530 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x53F CALLDATASIZE PUSH1 0x4 PUSH2 0x405D JUMP JUMPDEST PUSH2 0xF57 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x409E JUMP JUMPDEST PUSH2 0x1008 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x570 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP TIMESTAMP PUSH2 0x41B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x583 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x5AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0x109E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x10D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x5E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8D JUMP JUMPDEST PUSH2 0x12CA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x60A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x619 CALLDATASIZE PUSH1 0x4 PUSH2 0x40BB JUMP JUMPDEST PUSH2 0x1727 JUMP JUMPDEST PUSH2 0x375 PUSH2 0x62C CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH2 0x18A0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x1A44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x652 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x661 CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH2 0x1A5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x672 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x8 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x688 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x697 CALLDATASIZE PUSH1 0x4 PUSH2 0x40E0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x6CD CALLDATASIZE PUSH1 0x4 PUSH2 0x3F53 JUMP JUMPDEST PUSH2 0x1A85 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x11 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x9 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x719 CALLDATASIZE PUSH1 0x4 PUSH2 0x40E0 JUMP JUMPDEST PUSH2 0x1F21 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x33F PUSH2 0x1FB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xF SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x76E CALLDATASIZE PUSH1 0x4 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0x1FBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x77F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xE SLOAD PUSH2 0x4CC SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x397 PUSH2 0x7AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3DEE JUMP JUMPDEST PUSH2 0x205A JUMP JUMPDEST PUSH2 0x7C6 PUSH2 0x7C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x40FD JUMP JUMPDEST PUSH2 0x2067 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x34C SWAP2 SWAP1 PUSH2 0x4171 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH1 0x7 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4CC PUSH2 0x804 CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x82B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x220C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x840 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x2464 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x397 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x883 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8D JUMP JUMPDEST PUSH2 0x247E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x894 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x4CC SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x3CD SWAP1 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x397 SWAP1 PUSH1 0xFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x909 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F8D JUMP JUMPDEST PUSH2 0x266B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x91A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x6 SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x93E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x94D CALLDATASIZE PUSH1 0x4 PUSH2 0x41D3 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 CALLVALUE DUP1 ISZERO PUSH2 0x984 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41B PUSH2 0x993 CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9C5 PUSH2 0x9C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4044 JUMP JUMPDEST PUSH2 0x2851 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE ADD PUSH2 0x34C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xA SLOAD PUSH2 0x44D SWAP1 PUSH1 0x1 PUSH1 0x50 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA0A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x375 PUSH2 0x2888 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0xA22 SWAP1 PUSH2 0x4201 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0xA4E SWAP1 PUSH2 0x4201 JUMP JUMPDEST DUP1 ISZERO PUSH2 0xA9B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xA70 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xA9B 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 0xA7E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0xAD8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACF SWAP1 PUSH2 0x423C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xAE0 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0xAE8 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD DUP3 ISZERO ISZERO PUSH2 0x100 MUL PUSH2 0xFF00 NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x1D492B98217FF50D005C548E0FA3A96DC38B2BAFCCAF5BAEDF42C112BD39FDFB SWAP1 PUSH2 0xB31 SWAP1 DUP4 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0xB41 PUSH2 0x2906 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB51 CALLER DUP5 DUP5 PUSH2 0x2915 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0xBA8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x14995B185E5CC8185C9948191A5CD8589B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0xBB0 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0xBB8 PUSH2 0x28FA JUMP JUMPDEST PUSH8 0x3782DACE9D90000 DUP3 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0xBF2 JUMPI POP PUSH8 0x3782DACE9D90000 DUP3 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC0F JUMPI POP PUSH8 0x6F05B59D3B20000 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0xC4A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x496E76616C69642066656573 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC55 DUP4 PUSH2 0x2A3A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0xCAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x50656E64696E672072656C617920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 TIMESTAMP SWAP1 POP PUSH1 0x0 PUSH2 0xCBF DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x2A7D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0xCE1 JUMPI PUSH2 0xCE1 PUSH2 0x4273 JUMP JUMPDEST DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x15 PUSH2 0xD0C DUP4 PUSH2 0x429F JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB SLOAD DUP2 MSTORE POP SWAP1 POP PUSH2 0xD67 DUP2 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xD83 DUP8 DUP4 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0x80 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH2 0xD9A SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST LT ISZERO PUSH2 0xDE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x496E73756666696369656E7420706F6F6C2062616C616E6365 PUSH1 0x38 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD DUP5 PUSH2 0xDF4 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE0C SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0xE25 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x6 SLOAD PUSH2 0xE47 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH2 0x2B04 JUMP JUMPDEST DUP6 PUSH32 0xA4CA36D112520CCED74325C72711F376FE4015665829D879BA21590CB8130BE0 DUP10 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0xE7B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x43FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE9F PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0xEA7 PUSH2 0x28FA JUMP JUMPDEST PUSH2 0xEB1 PUSH1 0x0 PUSH2 0x2B75 JUMP JUMPDEST SWAP1 POP PUSH2 0xEBB PUSH2 0x2906 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xEC8 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0xEDA PUSH2 0xED5 DUP5 DUP5 PUSH2 0x2AB0 JUMP JUMPDEST PUSH2 0x2C03 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xEF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x40 MLOAD PUSH4 0x117C72B3 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x22F8E566 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xF3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF50 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF64 DUP5 DUP5 DUP5 PUSH2 0x2C40 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 0xFE9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732061 PUSH1 0x44 DUP3 ADD MSTORE PUSH8 0x6C6C6F77616E6365 PUSH1 0xC0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0xFFD DUP6 CALLER PUSH2 0xFF8 DUP7 DUP6 PUSH2 0x42C3 JUMP JUMPDEST PUSH2 0x2915 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1032 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACF SWAP1 PUSH2 0x423C JUMP JUMPDEST PUSH2 0x103A PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1042 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH10 0xFFFFFFFFFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP5 DUP2 AND DUP3 MUL SWAP3 SWAP1 SWAP3 OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP3 DIV AND DUP2 MSTORE PUSH32 0x958B6B3E25D854F9E658CD5610BD9D184123D203F58F95ADF261E0D7D0DD65A5 SWAP1 PUSH1 0x20 ADD PUSH2 0xB31 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0xB51 SWAP2 DUP6 SWAP1 PUSH2 0xFF8 SWAP1 DUP7 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH2 0x10DD PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x10E5 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xC73A32C3 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1147 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 0x116B SWAP2 SWAP1 PUSH2 0x4428 JUMP JUMPDEST PUSH1 0xA PUSH1 0xE PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x173684C5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11F3 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 0x1217 SWAP2 SWAP1 PUSH2 0x4445 JUMP JUMPDEST PUSH1 0xA PUSH1 0x16 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0xE PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x7998A1C4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1285 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1299 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 0x12BD SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST PUSH1 0x11 SSTORE PUSH2 0x12C8 PUSH2 0x2906 JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x12D2 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x12DA PUSH2 0x28FA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E5 DUP4 PUSH2 0x2A3A JUMP JUMPDEST SWAP1 POP PUSH2 0x12F1 DUP2 DUP4 PUSH2 0x2E18 JUMP JUMPDEST PUSH1 0x1 DUP3 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1306 JUMPI PUSH2 0x1306 PUSH2 0x4273 JUMP JUMPDEST EQ PUSH2 0x1345 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x105B1C9958591E481CD95D1D1B1959 PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x1369 SWAP2 SWAP1 PUSH2 0x447B JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP2 PUSH4 0xFFFFFFFF AND GT ISZERO PUSH2 0x13B6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH18 0x139BDD081CD95D1D1B1958589B19481E595D PUSH1 0x72 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST DUP3 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x13EA JUMPI POP PUSH2 0x13E1 DUP2 PUSH2 0x384 PUSH2 0x447B JUMP JUMPDEST PUSH4 0xFFFFFFFF AND TIMESTAMP GT JUMPDEST PUSH2 0x1429 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH16 0x2737BA1039B637BB903932B630BCB2B9 PUSH1 0x81 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH2 0x149D SWAP1 DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x40 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x80 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xA0 ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0xC0 ADD MLOAD DUP2 MSTORE POP PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH1 0x60 DUP6 ADD MLOAD PUSH2 0x14D0 SWAP2 PUSH2 0x14C6 SWAP2 PUSH2 0x44A3 JUMP JUMPDEST DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x2EA5 JUMP JUMPDEST DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x14DF SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x14ED DUP5 DUP7 PUSH2 0x2ECD JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xA SLOAD SWAP2 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x1522 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO JUMPDEST ISZERO PUSH2 0x153A JUMPI PUSH2 0x1535 DUP8 PUSH1 0x40 ADD MLOAD DUP5 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x156F JUMP JUMPDEST PUSH2 0x156F PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1555 JUMPI DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x1557 JUMP JUMPDEST DUP2 JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP6 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1583 DUP9 PUSH1 0xA0 ADD MLOAD DUP10 PUSH1 0x80 ADD MLOAD PUSH2 0x2EA5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH1 0xA0 ADD MLOAD DUP9 PUSH1 0xC0 ADD MLOAD PUSH2 0x159B SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x20 DUP10 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ ISZERO PUSH2 0x15E3 JUMPI PUSH1 0x20 DUP9 ADD MLOAD PUSH2 0x15DE SWAP1 PUSH2 0x15C6 DUP4 DUP6 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 SWAP1 PUSH2 0x2FC1 JUMP JUMPDEST PUSH2 0x1621 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x1605 SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x1621 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP5 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x162D DUP4 DUP8 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP DUP10 PUSH1 0x80 ADD MLOAD PUSH1 0x9 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1645 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x165E SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1677 SWAP2 SWAP1 PUSH2 0x44C5 JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP2 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1690 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x169E SWAP1 POP PUSH2 0x2FF1 JUMP JUMPDEST PUSH2 0x16B8 PUSH2 0x16B3 DUP11 PUSH1 0x60 ADD MLOAD DUP13 PUSH1 0x80 ADD MLOAD PUSH2 0x2EA5 JUMP JUMPDEST PUSH2 0x302F JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH32 0xCFDDA74FCE9FEDB259E0F0A1AB1550E19B338488ECE64976A4639E7FCE0293A7 DUP12 PUSH1 0x40 MLOAD PUSH2 0x16F2 SWAP2 SWAP1 PUSH2 0x4506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH1 0x0 SWAP2 DUP3 MSTORE POP PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE POP PUSH2 0xE91 SWAP2 POP PUSH2 0x2906 SWAP1 POP JUMP JUMPDEST PUSH2 0x172F PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1737 PUSH2 0x28FA JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x1746 JUMPI POP PUSH1 0xA SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x1782 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x86C2DCE840E6CADCC840CAE8D PUSH1 0x9B SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x1795 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0x179F SWAP1 DUP6 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x17A9 SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x9 SLOAD PUSH2 0x17B9 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x7 SLOAD LT ISZERO PUSH2 0x180A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5574696C697A6174696F6E20746F6F206869676820746F2072656D6F76650000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x1814 CALLER DUP5 PUSH2 0x30DA JUMP JUMPDEST DUP1 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1826 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP DUP2 ISZERO PUSH2 0x1840 JUMPI PUSH2 0x183B CALLER DUP3 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x185C JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x185C SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP6 SWAP1 MSTORE CALLER SWAP2 PUSH32 0xC54FC223FFD1A8F36652B5E83DB4FFF50F5AE151B11CEB56D5499B9F6E1FA18 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST PUSH2 0x18A8 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x18B0 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xFF AND DUP1 ISZERO PUSH2 0x18C1 JUMPI POP DUP1 CALLVALUE EQ JUMPDEST DUP1 PUSH2 0x18CA JUMPI POP CALLVALUE ISZERO JUMPDEST PUSH2 0x1916 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616420616464206C6971756964697479204574682076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1920 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0x1932 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x193C SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP1 POP PUSH2 0x1948 CALLER DUP3 PUSH2 0x3229 JUMP JUMPDEST DUP2 PUSH1 0x7 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x195A SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP CALLVALUE ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1970 JUMPI POP PUSH1 0xA SLOAD PUSH1 0xFF AND JUMPDEST ISZERO PUSH2 0x19E3 JUMPI PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD0E30DB0 CALLVALUE 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 0x19C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19D9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x1A00 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x1A00 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP6 PUSH2 0x2B04 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE CALLER SWAP2 PUSH32 0x351F600EF1E31E5E13B4DC27BFF4CBDE3E9269F0FFC666629AE6CAC573EB220 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0xB41 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A4E PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1A56 PUSH2 0x3308 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A65 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1A6D PUSH2 0x28FA JUMP JUMPDEST PUSH2 0x1A76 DUP3 PUSH2 0x2B75 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A80 PUSH2 0x2906 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1AD2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x14995B185E5CC8185C9948191A5CD8589B1959 PUSH1 0x6A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x1ADA PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1AE2 PUSH2 0x28FA JUMP JUMPDEST PUSH1 0x0 TIMESTAMP SWAP1 POP PUSH8 0x3782DACE9D90000 DUP4 PUSH1 0xA0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO DUP1 ISZERO PUSH2 0x1B21 JUMPI POP PUSH8 0x3782DACE9D90000 DUP4 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x1B3E JUMPI POP PUSH8 0x6F05B59D3B20000 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND GT ISZERO JUMPDEST PUSH2 0x1B79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xC PUSH1 0x24 DUP3 ADD MSTORE PUSH12 0x496E76616C69642066656573 PUSH1 0xA0 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1B84 DUP5 PUSH2 0x2A3A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x1BDA JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x50656E64696E672072656C617920657869737473 PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BE9 DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0x2A7D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1C0B JUMPI PUSH2 0x1C0B PUSH2 0x4273 JUMP JUMPDEST DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 PUSH1 0xA8 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x15 PUSH2 0x1C36 DUP4 PUSH2 0x429F JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xB SLOAD DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 PUSH2 0x1C94 DUP8 DUP4 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C9F DUP3 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x1CBB DUP6 DUP5 PUSH2 0x2ECD JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x1D1D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x52656C61792063616E6E6F74206265207370656420757 PUSH1 0x4C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST DUP8 PUSH1 0x80 ADD MLOAD PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH2 0x1D32 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST LT ISZERO PUSH2 0x1D7C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH25 0x496E73756666696369656E7420706F6F6C2062616C616E6365 PUSH1 0x38 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH1 0xB SLOAD DUP6 PUSH2 0x1D8C SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1DC0 DUP11 PUSH1 0xC0 ADD MLOAD DUP12 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x1DAC SWAP2 SWAP1 PUSH2 0x44A3 JUMP JUMPDEST PUSH2 0x1DB6 SWAP2 SWAP1 PUSH2 0x44A3 JUMP JUMPDEST DUP12 PUSH1 0x80 ADD MLOAD PUSH2 0x2EA5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x80 ADD MLOAD PUSH2 0x1DD4 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1DE8 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x80 DUP12 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1E04 SWAP1 DUP5 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x1E52 SWAP1 ADDRESS PUSH2 0x1E39 DUP7 DUP6 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 SWAP1 PUSH2 0x2B04 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x1E70 JUMPI PUSH2 0x1E6B DUP12 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x1E92 JUMP JUMPDEST PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x1E92 SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST DUP8 PUSH32 0xA4CA36D112520CCED74325C72711F376FE4015665829D879BA21590CB8130BE0 DUP13 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x1EC6 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x43FC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 PUSH32 0xF98CDDC88BC965917007822B05056CB92BC9DDF0F8BCC61678400CB78313BB4B DUP9 PUSH1 0x40 MLOAD PUSH2 0x1F08 SWAP2 SWAP1 PUSH2 0x4506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x1F4B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACF SWAP1 PUSH2 0x423C JUMP JUMPDEST PUSH2 0x1F53 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x1F5B PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH32 0x485A12424BD0C2C66A131C2681CB6C743B9573AF3AE5F3014EF6CE7F55AB0192 SWAP2 ADD PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x5 DUP1 SLOAD PUSH2 0xA22 SWAP1 PUSH2 0x4201 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP3 DUP2 LT ISZERO PUSH2 0x2041 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A2064656372656173656420616C6C6F77616E63652062656C6F77 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x207A65726F PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x2050 CALLER DUP6 PUSH2 0xFF8 DUP7 DUP6 PUSH2 0x42C3 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB51 CALLER DUP5 DUP5 PUSH2 0x2C40 JUMP JUMPDEST PUSH1 0x60 CALLVALUE ISZERO PUSH2 0x20B7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F6E6C79206D756C746963616C6C207769746820302076616C75650000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20CF JUMPI PUSH2 0x20CF PUSH2 0x3E1A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2102 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x20ED JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2205 JUMPI PUSH1 0x0 DUP1 ADDRESS DUP7 DUP7 DUP6 DUP2 DUP2 LT PUSH2 0x2126 JUMPI PUSH2 0x2126 PUSH2 0x456B JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x2138 SWAP2 SWAP1 PUSH2 0x4581 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2146 SWAP3 SWAP2 SWAP1 PUSH2 0x45CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2181 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 0x2186 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x21D2 JUMPI PUSH1 0x44 DUP2 MLOAD LT ISZERO PUSH2 0x219F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x4 DUP2 ADD SWAP1 POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x21B9 SWAP2 SWAP1 PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xACF SWAP2 SWAP1 PUSH2 0x3D90 JUMP JUMPDEST DUP1 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x21E5 JUMPI PUSH2 0x21E5 PUSH2 0x456B JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP POP POP DUP1 DUP1 PUSH2 0x21FD SWAP1 PUSH2 0x467F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x2108 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x2214 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x221C PUSH2 0x28FA JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x2E68F213 PUSH1 0xE2 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0xB9A3C84C SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2261 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2275 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 0x2299 SWAP2 SWAP1 PUSH2 0x469A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH22 0x536B696E6E794F7074696D69737469634F7261636C65 PUSH1 0x50 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x22F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2308 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 0x232C SWAP2 SWAP1 PUSH2 0x469A JUMP JUMPDEST PUSH1 0x10 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH4 0x2ABF579 PUSH1 0xE6 SHL DUP2 MSTORE PUSH5 0x53746F7265 PUSH1 0xD8 SHL PUSH1 0x4 DUP3 ADD MSTORE SWAP1 DUP3 AND SWAP1 PUSH4 0xAAFD5E40 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2388 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x239C 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 0x23C0 SWAP2 SWAP1 PUSH2 0x469A JUMP JUMPDEST PUSH1 0xF DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x5B97AADD PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV SWAP1 SWAP3 AND PUSH1 0x4 DUP4 ADD MSTORE SWAP1 PUSH4 0x5B97AADD SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x241F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2433 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 0x2457 SWAP2 SWAP1 PUSH2 0x46B7 JUMP JUMPDEST MLOAD PUSH1 0xB SSTORE POP PUSH2 0x12C8 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x246E PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x2476 PUSH2 0x28FA JUMP JUMPDEST PUSH2 0xEB1 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0x2486 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x248E PUSH2 0x28FA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2499 DUP4 PUSH2 0x2A3A JUMP JUMPDEST SWAP1 POP PUSH2 0x24A5 DUP2 DUP4 PUSH2 0x2E18 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x24B1 DUP3 DUP5 PUSH2 0x2ECD JUMP JUMPDEST SWAP1 POP PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP4 PUSH1 0x80 ADD MLOAD PUSH2 0x24D5 SWAP2 SWAP1 PUSH2 0x447B JUMP JUMPDEST PUSH4 0xFFFFFFFF AND TIMESTAMP LT DUP1 ISZERO PUSH2 0x24FB JUMPI POP PUSH1 0x1 DUP4 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x24F9 JUMPI PUSH2 0x24F9 PUSH2 0x4273 JUMP JUMPDEST EQ JUMPDEST DUP1 ISZERO PUSH2 0x251C JUMPI POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO JUMPDEST PUSH2 0x2562 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH23 0x52656C61792063616E6E6F74206265207370656420757 PUSH1 0x4C SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x13 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH1 0xC0 DUP6 ADD MLOAD PUSH1 0xA0 DUP7 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH2 0x25A7 SWAP3 SWAP2 PUSH2 0x259D SWAP2 PUSH2 0x44A3 JUMP JUMPDEST PUSH2 0x14C6 SWAP2 SWAP1 PUSH2 0x44A3 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP7 PUSH1 0x80 ADD MLOAD PUSH2 0x25BB SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0xA SLOAD SWAP1 SWAP2 POP PUSH1 0xFF AND ISZERO PUSH2 0x25F9 JUMPI PUSH1 0x6 SLOAD PUSH2 0x25E6 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER ADDRESS DUP5 PUSH2 0x2B04 JUMP JUMPDEST PUSH2 0x25F4 DUP7 PUSH1 0x40 ADD MLOAD DUP3 PUSH2 0x2EF8 JUMP JUMPDEST PUSH2 0x261D JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD PUSH1 0x6 SLOAD PUSH2 0x261D SWAP2 PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLER SWAP1 DUP5 PUSH2 0x2B04 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH32 0xF98CDDC88BC965917007822B05056CB92BC9DDF0F8BCC61678400CB78313BB4B DUP8 PUSH1 0x40 MLOAD PUSH2 0x2657 SWAP2 SWAP1 PUSH2 0x4506 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST PUSH2 0x2673 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x267B PUSH2 0x28FA JUMP JUMPDEST TIMESTAMP PUSH1 0xA SLOAD PUSH1 0x80 DUP4 ADD MLOAD PUSH2 0x269B SWAP2 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH2 0x447B JUMP JUMPDEST PUSH4 0xFFFFFFFF AND GT PUSH2 0x26DE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x50617374206C6976656E657373 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x1 DUP2 MLOAD PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x26F3 JUMPI PUSH2 0x26F3 PUSH2 0x4273 JUMP JUMPDEST EQ PUSH2 0x2731 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH14 0x4E6F742064697370757461626C65 PUSH1 0x90 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x273C DUP4 PUSH2 0x2A3A JUMP JUMPDEST SWAP1 POP PUSH2 0x2748 DUP2 DUP4 PUSH2 0x2E18 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2754 DUP5 DUP5 PUSH2 0x2AB0 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2779 DUP5 PUSH1 0x20 ADD MLOAD CALLER DUP7 PUSH1 0xA0 ADD MLOAD DUP8 PUSH1 0xC0 ADD MLOAD PUSH2 0x2774 DUP8 PUSH2 0x2C03 JUMP JUMPDEST PUSH2 0x3378 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0xA0 ADD MLOAD DUP5 PUSH1 0xC0 ADD MLOAD PUSH2 0x278F SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0xD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x27A0 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0x9 DUP1 SLOAD PUSH1 0x0 SWAP1 PUSH2 0x27BC SWAP1 DUP5 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE DUP1 ISZERO PUSH2 0x2810 JUMPI CALLER PUSH2 0x27E0 DUP6 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0x29751133C2D0A0EA7A9DA312248B12EF10AC4C20F4E3AB5EEBBB80D853B38367 SWAP1 PUSH1 0x0 SWAP1 LOG4 PUSH2 0x2846 JUMP JUMPDEST CALLER PUSH2 0x281A DUP6 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP6 SWAP1 PUSH32 0x14173C4D3BD95E34F5C8F78729323444C9272BD21051E70045B64ED48F658183 SWAP1 PUSH1 0x0 SWAP1 LOG4 JUMPDEST POP POP POP PUSH2 0xE91 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x285C PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x2864 PUSH2 0x28FA JUMP JUMPDEST PUSH2 0x286E PUSH1 0x0 PUSH2 0x2B75 JUMP JUMPDEST PUSH2 0x2877 DUP5 PUSH2 0x2B75 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x2883 PUSH2 0x2906 JUMP JUMPDEST SWAP2 POP SWAP2 JUMP JUMPDEST PUSH2 0x2890 PUSH2 0x28A8 JUMP JUMPDEST PUSH2 0x2898 PUSH2 0x28FA JUMP JUMPDEST PUSH2 0x28A0 PUSH2 0x369D JUMP JUMPDEST PUSH2 0x12C8 PUSH2 0x2906 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0xFF AND PUSH2 0x12C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2977 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F76652066726F6D20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x29D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A20617070726F766520746F20746865207A65726F206164647265 PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x7373 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 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 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE SWAP1 MLOAD DUP5 DUP2 MSTORE PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH2 0x2A60 SWAP2 DUP5 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x20 ADD PUSH2 0x46F8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 SWAP1 PUSH2 0xB55 SWAP1 PUSH1 0x1 PUSH1 0x70 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND DUP4 PUSH2 0x2EA5 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2A60 SWAP2 SWAP1 PUSH2 0x4506 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2AE6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4720 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x24 DUP4 ADD MSTORE DUP4 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x2B6F SWAP1 DUP6 SWAP1 PUSH4 0x23B872DD PUSH1 0xE0 SHL SWAP1 PUSH1 0x84 ADD 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 0x3760 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B7F PUSH2 0x369D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x8 SLOAD SGT PUSH2 0x2B91 JUMPI PUSH1 0x0 PUSH2 0x2B95 JUMP JUMPDEST PUSH1 0x8 SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x9 SLOAD DUP6 PUSH2 0x2BA8 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST PUSH2 0x2BB2 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x7 SLOAD PUSH2 0x2BC4 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2BDD JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 PUSH2 0x2BF0 DUP4 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x2BFA SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xB55 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x9 DUP2 MSTORE PUSH1 0x20 ADD PUSH9 0xE4CAD8C2F290C2E6D PUSH1 0xBB SHL DUP2 MSTORE POP DUP5 PUSH2 0x3832 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2CA4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E736665722066726F6D20746865207A65726F206164 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x6472657373 PUSH1 0xD8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2D06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x23 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220746F20746865207A65726F2061646472 PUSH1 0x44 DUP3 ADD MSTORE PUSH3 0x657373 PUSH1 0xE8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF 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 0x2D7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A207472616E7366657220616D6F756E7420657863656564732062 PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x616C616E6365 PUSH1 0xD0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x2D88 DUP3 DUP3 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP6 AND DUP2 MSTORE SWAP1 DUP2 KECCAK256 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x2DBE SWAP1 DUP5 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP5 PUSH1 0x40 MLOAD PUSH2 0x2E0A SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH2 0x2E21 DUP2 PUSH2 0x2A9D JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x12 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD EQ PUSH2 0xE91 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x4861736865642072656C617920706172616D7320646F206E6F74206D61746368 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206578697374696E672072656C6179206861736820666F72206465706F736974 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 PUSH8 0xDE0B6B3A7640000 PUSH2 0x2EC3 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP7 AND PUSH2 0x4514 JUMP JUMPDEST PUSH2 0xEDA SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 PUSH1 0x60 ADD MLOAD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2AE6 SWAP3 SWAP2 SWAP1 SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EXTCODESIZE ISZERO PUSH2 0x2F24 JUMPI PUSH1 0x6 SLOAD PUSH2 0xE91 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x2E1A7D4D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 SWAP1 SWAP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F82 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND 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 0x2FBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x2FBC SWAP1 DUP5 SWAP1 PUSH4 0xA9059CBB PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2B38 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2FFB PUSH2 0x3308 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0xC SLOAD PUSH2 0x300B SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0xC SSTORE POP PUSH1 0xA DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x50 SHL NOT AND PUSH1 0x1 PUSH1 0x50 SHL TIMESTAMP PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE JUMP JUMPDEST DUP1 PUSH1 0xC PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3041 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x305A SWAP2 SWAP1 PUSH2 0x44C5 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x306D PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x307E JUMPI POP PUSH8 0xDE0B6B3A7640000 SWAP1 JUMP JUMPDEST PUSH2 0x3086 PUSH2 0x2FF1 JUMP JUMPDEST PUSH2 0x308E PUSH2 0x369D JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC SLOAD PUSH1 0x8 SLOAD PUSH1 0x7 SLOAD PUSH2 0x30A3 SWAP2 SWAP1 PUSH2 0x44C5 JUMP JUMPDEST PUSH2 0x30AD SWAP2 SWAP1 PUSH2 0x4765 JUMP JUMPDEST SWAP1 POP PUSH2 0x30B8 PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x30CA DUP3 PUSH8 0xDE0B6B3A7640000 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x30D4 SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x313A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E2066726F6D20746865207A65726F20616464726573 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x73 PUSH1 0xF8 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF 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 0x31AE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x22 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206275726E20616D6F756E7420657863656564732062616C616E PUSH1 0x44 DUP3 ADD MSTORE PUSH2 0x6365 PUSH1 0xF0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH2 0x31B8 DUP3 DUP3 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD DUP5 SWAP3 SWAP1 PUSH2 0x31E6 SWAP1 DUP5 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP3 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH2 0x2A2D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x327F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x45524332303A206D696E7420746F20746865207A65726F206164647265737300 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST DUP1 PUSH1 0x3 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3291 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0x32BE SWAP1 DUP5 SWAP1 PUSH2 0x42DA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH1 0x0 SWAP1 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH8 0xDE0B6B3A7640000 SWAP1 PUSH1 0x1 PUSH1 0x50 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND TIMESTAMP PUSH2 0x3332 SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0xA SLOAD PUSH1 0xC SLOAD PUSH2 0x3351 SWAP2 PUSH3 0x10000 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x335B SWAP2 SWAP1 PUSH2 0x4514 JUMP JUMPDEST PUSH2 0x3365 SWAP2 SWAP1 PUSH2 0x4549 JUMP JUMPDEST SWAP1 POP PUSH1 0xC SLOAD DUP2 LT PUSH2 0x1A80 JUMPI PUSH1 0xC SLOAD PUSH2 0x30D4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3385 DUP6 DUP6 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD SWAP2 SWAP3 POP PUSH2 0x33AA SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 AND DUP4 PUSH2 0x3878 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x11 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0xAF355D1E SWAP1 TIMESTAMP DUP7 PUSH1 0x6 PUSH1 0x1 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 DUP12 PUSH1 0xA PUSH1 0x16 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP16 PUSH8 0xDE0B6B3A7640000 PUSH1 0x40 MLOAD DUP11 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x341E SWAP10 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x47A4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3438 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3468 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x3465 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4462 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x34B5 JUMPI PUSH1 0x6 SLOAD PUSH2 0x3488 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x34AB SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND PUSH1 0x0 PUSH2 0x3878 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x2BFA JUMP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3510 JUMPI PUSH1 0x0 PUSH2 0x34C9 DUP3 DUP5 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x6 SLOAD SWAP1 SWAP2 POP PUSH2 0x34E8 SWAP1 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP11 DUP4 PUSH2 0x2FC1 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x350B SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND PUSH1 0x0 PUSH2 0x3878 JUMP JUMPDEST DUP2 SWAP3 POP POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x6 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH8 0xDE0B6B3A7640000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA SLOAD PUSH1 0xC0 DUP3 ADD SWAP1 PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND TIMESTAMP PUSH2 0x3580 SWAP2 SWAP1 PUSH2 0x42DA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0x3596 DUP9 DUP6 PUSH2 0x42C3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0xA SLOAD PUSH1 0x1 PUSH1 0xB0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x40 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x6 SLOAD SWAP2 SWAP3 POP PUSH2 0x35DF SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH2 0x2B04 AND JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x6 SLOAD PUSH2 0x3601 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x100 SWAP1 SWAP3 DIV DUP3 AND SWAP2 AND DUP5 PUSH2 0x3878 JUMP JUMPDEST PUSH1 0x10 SLOAD PUSH1 0x11 SLOAD PUSH1 0x40 MLOAD PUSH4 0x139C6419 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x9CE320C8 SWAP2 PUSH2 0x363C SWAP2 TIMESTAMP SWAP1 DUP10 SWAP1 DUP8 SWAP1 DUP15 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x480F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3656 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x366A 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 0x368E SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST POP PUSH1 0x1 SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0xD SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH4 0x70A08231 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 SWAP3 SWAP2 PUSH2 0x100 SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x36EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x36FE 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 0x3722 SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST PUSH2 0x372C SWAP2 SWAP1 PUSH2 0x42C3 JUMP JUMPDEST SWAP1 POP PUSH1 0x7 SLOAD DUP2 GT ISZERO PUSH2 0xB41 JUMPI PUSH1 0x7 SLOAD PUSH2 0x3745 SWAP1 DUP3 PUSH2 0x42C3 JUMP JUMPDEST PUSH1 0x8 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x3756 SWAP2 SWAP1 PUSH2 0x4765 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x7 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B5 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x20 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x5361666545524332303A206C6F772D6C6576656C2063616C6C206661696C6564 DUP2 MSTORE POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x399C SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP2 POP ISZERO PUSH2 0x2FBC JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x37D3 SWAP2 SWAP1 PUSH2 0x4908 JUMP JUMPDEST PUSH2 0x2FBC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A204552433230206F7065726174696F6E20646964206E PUSH1 0x44 DUP3 ADD MSTORE PUSH10 0x1BDD081CDD58D8D95959 PUSH1 0xB2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x3840 DUP6 DUP6 PUSH2 0x39B3 JUMP JUMPDEST SWAP1 POP DUP5 DUP2 PUSH2 0x384D DUP6 PUSH2 0x39F5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x385F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4925 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 ISZERO DUP1 PUSH2 0x3901 JUMPI POP PUSH1 0x40 MLOAD PUSH4 0x6EB1769F PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xDD62ED3E SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x38C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x38DB 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 0x38FF SWAP2 SWAP1 PUSH2 0x4462 JUMP JUMPDEST ISZERO JUMPDEST PUSH2 0x396C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x36 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5361666545524332303A20617070726F76652066726F6D206E6F6E2D7A65726F PUSH1 0x44 DUP3 ADD MSTORE PUSH22 0x20746F206E6F6E2D7A65726F20616C6C6F77616E6365 PUSH1 0x50 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH2 0x2FBC SWAP1 DUP5 SWAP1 PUSH4 0x95EA7B3 PUSH1 0xE0 SHL SWAP1 PUSH1 0x64 ADD PUSH2 0x2B38 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x39AB DUP5 DUP5 PUSH1 0x0 DUP6 PUSH2 0x3A35 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x60 SWAP1 ISZERO PUSH2 0x39E4 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x39CE SWAP2 SWAP1 PUSH2 0x4968 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP PUSH2 0xB55 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x39CE SWAP2 SWAP1 PUSH2 0x499C JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3A04 PUSH1 0x80 DUP4 SWAP1 SHR PUSH2 0x3B5D JUMP JUMPDEST PUSH2 0x3A0D DUP4 PUSH2 0x3B5D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 SELFBALANCE LT ISZERO PUSH2 0x3A96 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x26 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A20696E73756666696369656E742062616C616E636520666F PUSH1 0x44 DUP3 ADD MSTORE PUSH6 0x1C8818D85B1B PUSH1 0xD2 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0xACF JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x3AE4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0xACF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD PUSH2 0x3B00 SWAP2 SWAP1 PUSH2 0x49C1 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 0x3B3D 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 0x3B42 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x3B52 DUP3 DUP3 DUP7 PUSH2 0x3CFF JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x0 SHR SWAP1 POP DUP1 PUSH16 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH9 0x10000000000000000 MUL DUP2 OR PUSH24 0xFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND SWAP1 POP DUP1 PUSH5 0x100000000 MUL DUP2 OR PUSH28 0xFFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF AND SWAP1 POP DUP1 PUSH3 0x10000 MUL DUP2 OR PUSH30 0xFFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF AND SWAP1 POP DUP1 PUSH2 0x100 MUL DUP2 OR PUSH31 0xFF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF AND SWAP1 POP DUP1 PUSH1 0x10 MUL DUP2 OR PUSH32 0xF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F AND SWAP1 POP PUSH1 0x0 PUSH1 0x8 DUP3 PUSH32 0x808080808080808080808080808080808080808080808080808080808080808 AND DUP2 PUSH2 0x3C81 JUMPI PUSH2 0x3C81 PUSH2 0x4533 JUMP JUMPDEST DIV PUSH1 0x4 PUSH32 0x404040404040404040404040404040404040404040404040404040404040404 DUP5 AND DIV PUSH1 0x2 PUSH32 0x202020202020202020202020202020202020202020202020202020202020202 DUP6 AND DIV OR AND PUSH1 0x27 MUL SWAP1 SWAP2 ADD PUSH32 0x3030303030303030303030303030303030303030303030303030303030303030 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x3D0E JUMPI POP DUP2 PUSH2 0xEDA JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x3D1E 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 0xACF SWAP2 SWAP1 PUSH2 0x3D90 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3D53 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3D3B JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2B6F JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3D7C DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3D38 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0xEDA PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3D64 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3DC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEDA DUP2 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1A80 DUP2 PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3E01 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3E0C DUP2 PUSH2 0x3DCE JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xE0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3E52 JUMPI PUSH2 0x3E52 PUSH2 0x3E1A JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1A80 DUP2 PUSH2 0x3E58 JUMP JUMPDEST PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xB41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x1A80 DUP2 PUSH2 0x3E78 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x100 DUP1 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EA9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x3ECB JUMPI PUSH2 0x3ECB PUSH2 0x3E1A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP3 POP DUP4 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3EE6 DUP3 PUSH2 0x3E58 JUMP JUMPDEST DUP2 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3EF8 PUSH1 0x40 DUP6 ADD PUSH2 0x3DE3 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x3F09 PUSH1 0x60 DUP6 ADD PUSH2 0x3DE3 JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x3F24 PUSH1 0xA0 DUP6 ADD PUSH2 0x3E6D JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x3F35 PUSH1 0xC0 DUP6 ADD PUSH2 0x3E6D JUMP JUMPDEST PUSH1 0xC0 DUP3 ADD MSTORE PUSH2 0x3F46 PUSH1 0xE0 DUP6 ADD PUSH2 0x3E8A JUMP JUMPDEST PUSH1 0xE0 DUP3 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x120 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3F67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3F71 DUP5 DUP5 PUSH2 0x3E95 JUMP JUMPDEST SWAP2 POP PUSH2 0x100 DUP4 ADD CALLDATALOAD PUSH2 0x3F82 DUP2 PUSH2 0x3E58 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH2 0x1E0 DUP2 SLT ISZERO PUSH2 0x3FA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3FAC DUP6 DUP6 PUSH2 0x3E95 JUMP JUMPDEST SWAP3 POP PUSH1 0xE0 PUSH1 0xFF NOT DUP3 ADD SLT ISZERO PUSH2 0x3FC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3FC9 PUSH2 0x3E30 JUMP JUMPDEST PUSH2 0x100 DUP5 ADD CALLDATALOAD PUSH1 0x3 DUP2 LT PUSH2 0x3FDC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MSTORE PUSH2 0x3FEB PUSH2 0x120 DUP6 ADD PUSH2 0x3DE3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x3FFD PUSH2 0x140 DUP6 ADD PUSH2 0x3E8A JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x400F PUSH2 0x160 DUP6 ADD PUSH2 0x3E6D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4021 PUSH2 0x180 DUP6 ADD PUSH2 0x3E8A JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x1A0 DUP5 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH2 0x1C0 SWAP1 SWAP4 ADD CALLDATALOAD PUSH1 0xC0 DUP5 ADD MSTORE POP SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4056 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4072 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x407D DUP2 PUSH2 0x3DCE JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x408D DUP2 PUSH2 0x3DCE JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEDA DUP2 PUSH2 0x3E58 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3F82 DUP2 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x40F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xEDA DUP2 PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4110 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x413B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x414A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x415F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 SWAP3 SWAP1 SWAP3 ADD SWAP7 SWAP2 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD DUP2 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP DUP4 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x41C6 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH2 0x41B4 DUP6 DUP4 MLOAD PUSH2 0x3D64 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4198 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x41E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x41F1 DUP2 PUSH2 0x3DCE JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3F82 DUP2 PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4215 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x4236 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x17 SWAP1 DUP3 ADD MSTORE PUSH32 0x43616C6C6572206E6F74206272696467652061646D696E000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 EQ ISZERO PUSH2 0x42B9 JUMPI PUSH2 0x42B9 PUSH2 0x4289 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x42D5 JUMPI PUSH2 0x42D5 PUSH2 0x4289 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x42ED JUMPI PUSH2 0x42ED PUSH2 0x4289 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 AND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x40 DUP7 ADD MSTORE DUP1 PUSH1 0x60 DUP6 ADD MLOAD AND PUSH1 0x60 DUP7 ADD MSTORE POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x80 DUP6 ADD MSTORE DUP1 PUSH1 0xA0 DUP5 ADD MLOAD AND PUSH1 0xA0 DUP6 ADD MSTORE DUP1 PUSH1 0xC0 DUP5 ADD MLOAD AND PUSH1 0xC0 DUP6 ADD MSTORE POP POP PUSH4 0xFFFFFFFF PUSH1 0xE0 DUP3 ADD MLOAD AND PUSH1 0xE0 DUP4 ADD MSTORE POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x3 DUP2 LT PUSH2 0x4386 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP3 MSTORE PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP4 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 PUSH2 0x43B3 SWAP1 DUP5 ADD DUP3 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0x60 DUP2 ADD MLOAD PUSH2 0x43CE PUSH1 0x60 DUP5 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0x80 DUP2 ADD MLOAD PUSH2 0x43E6 PUSH1 0x80 DUP5 ADD DUP3 PUSH4 0xFFFFFFFF AND SWAP1 MSTORE JUMP JUMPDEST POP PUSH1 0xA0 DUP2 DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0xC0 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH2 0x200 DUP2 ADD PUSH2 0x440B DUP3 DUP7 PUSH2 0x42F2 JUMP JUMPDEST PUSH2 0x4419 PUSH2 0x100 DUP4 ADD DUP6 PUSH2 0x4366 JUMP JUMPDEST DUP3 PUSH2 0x1E0 DUP4 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x443A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEDA DUP2 PUSH2 0x3E58 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4457 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEDA DUP2 PUSH2 0x3E78 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4474 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x449A JUMPI PUSH2 0x449A PUSH2 0x4289 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 AND DUP2 DUP6 AND DUP1 DUP4 SUB DUP3 GT ISZERO PUSH2 0x449A JUMPI PUSH2 0x449A PUSH2 0x4289 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 SLT DUP1 ISZERO PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 SWAP1 SUB DUP6 SGT AND ISZERO PUSH2 0x44E7 JUMPI PUSH2 0x44E7 PUSH2 0x4289 JUMP JUMPDEST PUSH1 0x1 PUSH1 0xFF SHL DUP4 SWAP1 SUB DUP5 SLT DUP2 AND ISZERO PUSH2 0x4500 JUMPI PUSH2 0x4500 PUSH2 0x4289 JUMP JUMPDEST POP POP ADD SWAP1 JUMP JUMPDEST PUSH1 0xE0 DUP2 ADD PUSH2 0xB55 DUP3 DUP5 PUSH2 0x4366 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x452E JUMPI PUSH2 0x452E PUSH2 0x4289 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4566 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4598 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x45B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x45C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x45F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4607 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP5 ADD SWAP2 POP DUP5 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x461B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x462D JUMPI PUSH2 0x462D PUSH2 0x3E1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x4655 JUMPI PUSH2 0x4655 PUSH2 0x3E1A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP8 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x466E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x3B52 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x3D38 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x4693 JUMPI PUSH2 0x4693 PUSH2 0x4289 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEDA DUP2 PUSH2 0x3DCE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x46EB JUMPI PUSH2 0x46EB PUSH2 0x3E1A JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 MLOAD DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x120 DUP2 ADD PUSH2 0x4707 DUP3 DUP6 PUSH2 0x42F2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x100 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x160 DUP2 ADD PUSH2 0x472F DUP3 DUP8 PUSH2 0x42F2 JUMP JUMPDEST PUSH4 0xFFFFFFFF SWAP5 SWAP1 SWAP5 AND PUSH2 0x100 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP3 SWAP1 SWAP3 AND PUSH2 0x120 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x140 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLT DUP1 ISZERO PUSH1 0x1 PUSH1 0xFF SHL DUP6 ADD DUP5 SLT AND ISZERO PUSH2 0x4783 JUMPI PUSH2 0x4783 PUSH2 0x4289 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 ADD DUP4 SGT DUP2 AND ISZERO PUSH2 0x479E JUMPI PUSH2 0x479E PUSH2 0x4289 JUMP JUMPDEST POP POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x120 DUP12 DUP4 MSTORE PUSH4 0xFFFFFFFF DUP1 DUP13 AND PUSH1 0x20 DUP6 ADD MSTORE DUP2 PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x47CB DUP3 DUP6 ADD DUP13 PUSH2 0x3D64 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH1 0xA0 DUP5 ADD SWAP8 SWAP1 SWAP8 MSTORE POP POP SWAP3 SWAP1 SWAP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP4 AND PUSH1 0xE0 DUP5 ADD MSTORE PUSH2 0x100 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x200 DUP9 DUP4 MSTORE PUSH4 0xFFFFFFFF DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE DUP1 PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x4835 DUP2 DUP5 ADD DUP9 PUSH2 0x3D64 JUMP JUMPDEST SWAP2 POP POP PUSH2 0x484E PUSH1 0x60 DUP4 ADD DUP7 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x80 DUP5 ADD MSTORE POP PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0xA0 DUP5 ADD MSTORE POP PUSH1 0x60 DUP6 ADD MLOAD DUP1 ISZERO ISZERO PUSH1 0xC0 DUP5 ADD MSTORE POP PUSH1 0x80 DUP6 ADD MLOAD PUSH1 0xE0 DUP4 ADD MSTORE PUSH1 0xA0 DUP6 ADD MLOAD PUSH2 0x100 DUP2 DUP2 DUP6 ADD MSTORE PUSH1 0xC0 DUP8 ADD MLOAD SWAP2 POP PUSH2 0x120 DUP3 DUP2 DUP7 ADD MSTORE PUSH1 0xE0 DUP9 ADD MLOAD SWAP3 POP PUSH2 0x140 DUP4 DUP2 DUP8 ADD MSTORE DUP3 DUP10 ADD MLOAD PUSH2 0x160 DUP8 ADD MSTORE DUP2 DUP10 ADD MLOAD PUSH2 0x180 DUP8 ADD MSTORE DUP1 DUP10 ADD MLOAD PUSH2 0x1A0 DUP8 ADD MSTORE POP POP POP POP PUSH2 0x48F3 PUSH2 0x1C0 DUP4 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1E0 DUP4 ADD MSTORE PUSH2 0x3B52 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x491A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xEDA DUP2 PUSH2 0x3DA3 JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x4937 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3D38 JUMP JUMPDEST DUP5 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x494B DUP2 DUP4 PUSH1 0x20 DUP10 ADD PUSH2 0x3D38 JUMP JUMPDEST DUP5 MLOAD SWAP2 ADD SWAP1 PUSH2 0x495E DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3D38 JUMP JUMPDEST ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0xB PUSH1 0xFA SHL DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD PUSH2 0x4984 DUP2 PUSH1 0x1 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x3D38 JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL PUSH1 0x1 SWAP4 SWAP1 SWAP2 ADD SWAP3 DUP4 ADD MSTORE POP PUSH1 0x2 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x49AE DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3D38 JUMP JUMPDEST PUSH1 0x1D PUSH1 0xF9 SHL SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x49D3 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3D38 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC4 0xB3 0x1E 0x1E 0xF9 0xE4 0xAF 0xF LOG1 0x49 PUSH30 0x6CE4AFBDAAB6148E447DDFF6E73FFBD5B0E4AA00C664736F6C6343000809 STOP CALLER ",
                            "sourceMap": "51505:507:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:98:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38390:190:14;;;;;;;;;;-1:-1:-1;38390:190:14;;;;;:::i;:::-;;:::i;:::-;;4174:166:0;;;;;;;;;;-1:-1:-1;4174:166:0;;;;;:::i;:::-;;:::i;:::-;;;1990:14:22;;1983:22;1965:41;;1953:2;1938:18;4174:166:0;1825:187:22;2868:32:14;;;;;;;;;;-1:-1:-1;2868:32:14;;;;;;;-1:-1:-1;;;;;2868:32:14;;;;;;-1:-1:-1;;;;;2286:31:22;;;2268:50;;2256:2;2241:18;2868:32:14;2124:200:22;21244:3013:14;;;;;;;;;;-1:-1:-1;21244:3013:14;;;;;:::i;:::-;;:::i;3546:20::-;;;;;;;;;;;;;;;;;;;4774:25:22;;;4762:2;4747:18;3546:20:14;4628:177:22;3097:38:14;;;;;;;;;;-1:-1:-1;3097:38:14;;;;-1:-1:-1;;;3097:38:14;;;;;;;;;5083:10:22;5071:23;;;5053:42;;5041:2;5026:18;3097:38:14;4909:192:22;3165:106:0;;;;;;;;;;-1:-1:-1;3252:12:0;;3165:106;;33953:136:14;;;;;;;;;;;;;:::i;39637:266::-;;;;;;;;;;-1:-1:-1;39637:266:14;;;;;:::i;:::-;;:::i;391:27:12:-;;;;;;;;;;-1:-1:-1;391:27:12;;;;-1:-1:-1;;;;;391:27:12;;;;;;-1:-1:-1;;;;;6587:32:22;;;6569:51;;6557:2;6542:18;391:27:12;6423:203:22;3947:55:14;;;;;;;;;;-1:-1:-1;3947:55:14;;;;-1:-1:-1;;;;;3947:55:14;;;1097:115:12;;;;;;;;;;-1:-1:-1;1097:115:12;;;;;:::i;:::-;;:::i;4807:414:0:-;;;;;;;;;;-1:-1:-1;4807:414:0;;;;;:::i;:::-;;:::i;37826:218:14:-;;;;;;;;;;-1:-1:-1;37826:218:14;;;;;:::i;:::-;;:::i;51898:112::-;;;;;;;;;;-1:-1:-1;51988:15:14;51898:112;;3014:91:0;;;;;;;;;;-1:-1:-1;3014:91:0;;3096:2;7917:36:22;;7905:2;7890:18;3014:91:0;7775:184:22;5616:212:0;;;;;;;;;;-1:-1:-1;5616:212:0;;;;;:::i;:::-;;:::i;36723:245:14:-;;;;;;;;;;;;;:::i;28206:4941::-;;;;;;;;;;-1:-1:-1;28206:4941:14;;;;;:::i;:::-;;:::i;3387:34::-;;;;;;;;;;;;;;;;12297:815;;;;;;;;;;-1:-1:-1;12297:815:14;;;;;:::i;:::-;;:::i;10692:965::-;;;;;;:::i;:::-;;:::i;38875:124::-;;;;;;;;;;;;;:::i;34436:171::-;;;;;;;;;;-1:-1:-1;34436:171:14;;;;;:::i;:::-;;:::i;2209:30::-;;;;;;;;;;;;;;;;3329:125:0;;;;;;;;;;-1:-1:-1;3329:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;3429:18:0;3403:7;3429:18;;;:9;:18;;;;;;;3329:125;14198:4357:14;;;;;;;;;;-1:-1:-1;14198:4357:14;;;;;:::i;:::-;;:::i;4104:25::-;;;;;;;;;;;;;;;;2331:30;;;;;;;;;;;;;;;;37309:215;;;;;;;;;;-1:-1:-1;37309:215:14;;;;;:::i;:::-;;:::i;2288:102:0:-;;;;;;;;;;;;;:::i;3914:27:14:-;;;;;;;;;;-1:-1:-1;3914:27:14;;;;-1:-1:-1;;;;;3914:27:14;;;6315:371:0;;;;;;;;;;-1:-1:-1;6315:371:0;;;;;:::i;:::-;;:::i;3694:39:14:-;;;;;;;;;;-1:-1:-1;3694:39:14;;;;-1:-1:-1;;;;;3694:39:14;;;3657:172:0;;;;;;;;;;-1:-1:-1;3657:172:0;;;;;:::i;:::-;;:::i;528:710:11:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2101:29:14:-;;;;;;;;;;;;;;;;6499:48;;;;;;;;;;-1:-1:-1;6499:48:14;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;6499:48:14;;;35811:457;;;;;;;;;;;;;:::i;33645:117::-;;;;;;;;;;;;;:::i;2712:32::-;;;;;;;;;;-1:-1:-1;2712:32:14;;;;;;;;;;;25780:1739;;;;;;;;;;-1:-1:-1;25780:1739:14;;;;;:::i;:::-;;:::i;1903:30::-;;;;;;;;;;-1:-1:-1;1903:30:14;;;;;;;-1:-1:-1;;;;;1903:30:14;;;3062:29;;;;;;;;;;-1:-1:-1;3062:29:14;;;;-1:-1:-1;;;3062:29:14;;-1:-1:-1;;;;;3062:29:14;;;2569:22;;;;;;;;;;-1:-1:-1;2569:22:14;;;;;;;;19177:1351;;;;;;;;;;-1:-1:-1;19177:1351:14;;;;;:::i;:::-;;:::i;2012:28::-;;;;;;;;;;-1:-1:-1;2012:28:14;;;;-1:-1:-1;;;2012:28:14;;;;;;3887:149:0;;;;;;;;;;-1:-1:-1;3887:149:0;;;;;:::i;:::-;-1:-1:-1;;;;;4002:18:0;;;3976:7;4002:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3887:149;6279:41:14;;;;;;;;;;-1:-1:-1;6279:41:14;;;;;:::i;:::-;;;;;;;;;;;;;;35055:279;;;;;;;;;;-1:-1:-1;35055:279:14;;;;;:::i;:::-;;:::i;:::-;;;;11771:25:22;;;11827:2;11812:18;;11805:34;;;;11744:18;35055:279:14;11597:248:22;2956:29:14;;;;;;;;;;-1:-1:-1;2956:29:14;;;;-1:-1:-1;;;2956:29:14;;;;;;33376:62;;;;;;;;;;;;;:::i;2077:98:0:-;2131:13;2163:5;2156:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2077:98;:::o;38390:190:14:-;7913:11;;-1:-1:-1;;;;;7913:11:14;7891:10;:34;7883:70;;;;-1:-1:-1;;;7883:70:14;;;;;;;:::i;:::-;;;;;;;;;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;38496:13:14::2;:30:::0;;;::::2;;;;-1:-1:-1::0;;38496:30:14;;::::2;;::::0;;38541:32:::2;::::0;::::2;::::0;::::2;::::0;38512:14;1990::22;1983:22;1965:41;;1953:2;1938:18;;1825:187;38541:32:14::2;;;;;;;;1384:20:10::1;:18;:20::i;:::-;38390:190:14::0;:::o;4174:166:0:-;4257:4;4273:39;665:10:5;4296:7:0;4305:6;4273:8;:39::i;:::-;-1:-1:-1;4329:4:0;4174:166;;;;;:::o;21244:3013:14:-;8025:13;;;;;;;8017:45;;;;-1:-1:-1;;;8017:45:14;;12789:2:22;8017:45:14;;;12771:21:22;12828:2;12808:18;;;12801:30;-1:-1:-1;;;12847:18:22;;;12840:49;12906:18;;8017:45:14;12587:343:22;8017:45:14;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;21680:7:14::2;21649:11;:27;;;-1:-1:-1::0;;;;;21649:38:14::2;;;:99;;;;;21741:7;21707:11;:30;;;-1:-1:-1::0;;;;;21707:41:14::2;;;21649:99;:145;;;;;21788:6;21768:16;-1:-1:-1::0;;;;;21768:26:14::2;;;21649:145;21628:204;;;::::0;-1:-1:-1;;;21628:204:14;;13137:2:22;21628:204:14::2;::::0;::::2;13119:21:22::0;13176:2;13156:18;;;13149:30;-1:-1:-1;;;13195:18:22;;;13188:42;13247:18;;21628:204:14::2;12935:336:22::0;21628:204:14::2;21906:19;21928:28;21944:11;21928:15;:28::i;:::-;22114:1;22083:19:::0;;;:6:::2;:19;::::0;;;;;21906:50;;-1:-1:-1;22083:33:14;22075:66:::2;;;::::0;-1:-1:-1;;;22075:66:14;;13478:2:22;22075:66:14::2;::::0;::::2;13460:21:22::0;13517:2;13497:18;;;13490:30;-1:-1:-1;;;13536:18:22;;;13529:50;13596:18;;22075:66:14::2;13276:344:22::0;22075:66:14::2;22252:23;51988:15:::0;22252:50:::2;;22313:20;22336:36;22353:11;:18;;;22336:16;:36::i;:::-;22313:59;;22777:26;22818:440;;;;;;;;22858:18;22818:440;;;;;;;;:::i;:::-;::::0;;22907:10:::2;22818:440;::::0;::::2;::::0;22944:14:::2;:16:::0;;22818:440;;;;;-1:-1:-1;;;22944:16:14;::::2;;;::::0;:14:::2;:16;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22818:440;;;;;;23088:16;-1:-1:-1::0;;;;;22818:440:14::2;;;;;23140:16;22818:440;;;;;;23188:12;22818:440;;;;23228:15;;22818:440;;::::0;22777:481:::2;;23290:28;23308:9;23290:17;:28::i;:::-;23268:19;::::0;;;:6:::2;:19;::::0;;;;:50;;;;23349:37:::2;23363:11:::0;23376:9;23349:13:::2;:37::i;:::-;23329:57;;23730:11;:18;;;23711:15;;23694:14;;:32;;;;:::i;:::-;:54;;23686:92;;;::::0;-1:-1:-1;;;23686:92:14;;14427:2:22;23686:92:14::2;::::0;::::2;14409:21:22::0;14466:2;14446:18;;;14439:30;-1:-1:-1;;;14485:18:22;;;14478:55;14550:18;;23686:92:14::2;14225:349:22::0;23686:92:14::2;23901:17;23936:15;;23921:12;:30;;;;:::i;:::-;23901:50;;23980:11;:18;;;23961:15;;:37;;;;;;;:::i;:::-;;;;;;;;24091:9;24082:5;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;24111:7:14::2;::::0;:62:::2;::::0;:7:::2;::::0;::::2;-1:-1:-1::0;;;;;24111:7:14::2;24136:10;24156:4;24163:9:::0;24111:24:::2;:62::i;:::-;24203:11;24188:62;24216:11;24229:9;24240;24188:62;;;;;;;;:::i;:::-;;;;;;;;21394:2863;;;;;;1384:20:10::1;:18;:20::i;:::-;21244:3013:14::0;;:::o;33953:136::-;34023:7;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;34049:33:14::1;34080:1;34049:30;:33::i;:::-;34042:40;;1384:20:10::0;:18;:20::i;:::-;33953:136:14;:::o;39637:266::-;39800:12;1603:19:10;:17;:19::i;:::-;39835:61:14::1;39858:37;39872:11;39885:9;39858:13;:37::i;:::-;39835:22;:61::i;:::-;39828:68:::0;39637:266;-1:-1:-1;;;39637:266:14:o;1097:115:12:-;899:3;875:12;-1:-1:-1;;;;;875:12:12;867:37;;;;;;1171:12:::1;::::0;1165:40:::1;::::0;-1:-1:-1;;;1165:40:12;;::::1;::::0;::::1;4774:25:22::0;;;-1:-1:-1;;;;;1171:12:12;;::::1;::::0;1165:34:::1;::::0;4747:18:22;;1165:40:12::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1097:115:::0;:::o;4807:414:0:-;4913:4;4929:36;4939:6;4947:9;4958:6;4929:9;:36::i;:::-;-1:-1:-1;;;;;5003:19:0;;4976:24;5003:19;;;:11;:19;;;;;;;;665:10:5;5003:33:0;;;;;;;;5054:26;;;;5046:79;;;;-1:-1:-1;;;5046:79:0;;16908:2:22;5046:79:0;;;16890:21:22;16947:2;16927:18;;;16920:30;16986:34;16966:18;;;16959:62;-1:-1:-1;;;17037:18:22;;;17030:38;17085:19;;5046:79:0;16706:404:22;5046:79:0;5135:57;5144:6;665:10:5;5166:25:0;5185:6;5166:16;:25;:::i;:::-;5135:8;:57::i;:::-;-1:-1:-1;5210:4:0;;4807:414;-1:-1:-1;;;;4807:414:0:o;37826:218:14:-;7913:11;;-1:-1:-1;;;;;7913:11:14;7891:10;:34;7883:70;;;;-1:-1:-1;;;7883:70:14;;;;;;;:::i;:::-;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;37947:18:14::2;:43:::0;;-1:-1:-1;;37947:43:14::2;::::0;-1:-1:-1;;;;;37947:43:14;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;;38005:32:::2;::::0;38018:18;::::2;;2268:50:22::0;;38005:32:14::2;::::0;2256:2:22;2241:18;38005:32:14::2;2124:200:22::0;5616:212:0;665:10:5;5704:4:0;5752:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;5752:34:0;;;;;;;;;;5704:4;;5720:80;;5743:7;;5752:47;;5789:10;;5752:47;:::i;36723:245:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;36810:11:14::1;;;;;;;;;-1:-1:-1::0;;;;;36810:11:14::1;-1:-1:-1::0;;;;;36810:27:14::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36792:15;;:47;;;;;-1:-1:-1::0;;;;;36792:47:14::1;;;;;-1:-1:-1::0;;;;;36792:47:14::1;;;;;;36876:11;;;;;;;;;-1:-1:-1::0;;;;;36876:11:14::1;-1:-1:-1::0;;;;;36876:36:14::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36849:24;;:65;;;;;;;;;;;;;;;;;;36937:11;;;;;;;;;-1:-1:-1::0;;;;;36937:11:14::1;-1:-1:-1::0;;;;;36937:22:14::1;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36924:10;:37:::0;1384:20:10;:18;:20::i;:::-;36723:245:14:o;28206:4941::-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;28319:19:14::1;28341:28;28357:11;28341:15;:28::i;:::-;28319:50;;28379:46;28402:11;28415:9;28379:22;:46::i;:::-;28467:18;28443:20:::0;;:42:::1;::::0;::::1;;;;;;:::i;:::-;;28435:70;;;::::0;-1:-1:-1;;;28435:70:14;;18014:2:22;28435:70:14::1;::::0;::::1;17996:21:22::0;18053:2;18033:18;;;18026:30;-1:-1:-1;;;18072:18:22;;;18065:45;18127:18;;28435:70:14::1;17812:339:22::0;28435:70:14::1;28515:21;28568:24;;;;;;;;;;;28539:9;:26;;;:53;;;;:::i;:::-;28515:77:::0;-1:-1:-1;51988:15:14;28610:14:::1;:34;;;;28602:65;;;::::0;-1:-1:-1;;;28602:65:14;;18591:2:22;28602:65:14::1;::::0;::::1;18573:21:22::0;18630:2;18610:18;;;18603:30;-1:-1:-1;;;18649:18:22;;;18642:48;18707:18;;28602:65:14::1;18389:342:22::0;28602:65:14::1;28952:9;:21;;;-1:-1:-1::0;;;;;28938:35:14::1;:10;-1:-1:-1::0;;;;;28938:35:14::1;;:85;;;-1:-1:-1::0;28996:27:14::1;:14:::0;29013:10:::1;28996:27;:::i;:::-;28977:46;;51988:15:::0;28977:46:::1;28938:85;28917:148;;;::::0;-1:-1:-1;;;28917:148:14;;18938:2:22;28917:148:14::1;::::0;::::1;18920:21:22::0;18977:2;18957:18;;;18950:30;-1:-1:-1;;;18996:18:22;;;18989:46;19052:18;;28917:148:14::1;18736:340:22::0;28917:148:14::1;29219:395;::::0;;::::1;::::0;::::1;::::0;;;29188:436:::1;::::0;29219:395;29259:20:::1;29219:395;;;;29310:9;:21;;;-1:-1:-1::0;;;;;29219:395:14::1;;;;;29358:9;:17;;;29219:395;;;;;;29411:9;:26;;;-1:-1:-1::0;;;;;29219:395:14::1;;;;;29473:9;:26;;;29219:395;;;;;;29531:9;:22;;;29219:395;;;;29581:9;:18;;;29219:395;;::::0;29188:17:::1;:436::i;:::-;29166:19;::::0;;;:6:::1;:19;::::0;;;;:458;;;;30591:27:::1;::::0;::::1;::::0;30562:26:::1;::::0;::::1;::::0;30544:95:::1;::::0;30562:56:::1;::::0;::::1;:::i;:::-;30620:11;:18;;;30544:17;:95::i;:::-;30507:11;:18;;;:132;;;;:::i;:::-;30453:186;;30743:24;30770:44;30791:11;30804:9;30770:20;:44::i;:::-;30824:22;30849:31:::0;;;:13:::1;:31;::::0;;;;;31084:10:::1;::::0;30743:71;;-1:-1:-1;;;;;;30849:31:14::1;::::0;31084:10:::1;;:42:::0;::::1;;;-1:-1:-1::0;;;;;;31098:28:14;::::1;::::0;31084:42:::1;31080:566;;;31142:71;31156:11;:23;;;31181:31;31142:13;:71::i;:::-;31080:566;;;31474:172;-1:-1:-1::0;;;;;31512:28:14;::::1;:71;;31560:11;:23;;;31512:71;;;31543:14;31512:71;31474:7;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;31474:7:14::1;::::0;31601:31;31474:20:::1;:172::i;:::-;31937:25;31965:66;31983:11;:27;;;32012:11;:18;;;31965:17;:66::i;:::-;31937:94;;32041:17;32082:9;:22;;;32061:9;:18;;;:43;;;;:::i;:::-;32118:21;::::0;::::1;::::0;32041:63;;-1:-1:-1;;;;;;32118:35:14::1;32143:10;32118:35;32114:286;;;32188:21;::::0;::::1;::::0;32167:74:::1;::::0;32211:29:::1;32231:9:::0;32211:17;:29:::1;:::i;:::-;32167:7;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;32167:7:14::1;::::0;;:20:::1;:74::i;:::-;32114:286;;;32291:21;::::0;::::1;::::0;32270:7:::1;::::0;:54:::1;::::0;:7:::1;::::0;;::::1;-1:-1:-1::0;;;;;32270:7:14::1;::::0;32314:9;32270:20:::1;:54::i;:::-;32338:7;::::0;:51:::1;::::0;:7:::1;::::0;::::1;-1:-1:-1::0;;;;;32338:7:14::1;32359:10;32371:17:::0;32338:20:::1;:51::i;:::-;32410:25;32438:51;32472:17:::0;32438:31;:51:::1;:::i;:::-;32410:79;;32588:11;:18;;;32569:15;;:37;;;;;;;:::i;:::-;;;;;;;;32634:17;32616:14;;:35;;;;;;;:::i;:::-;;;;;;;;32688:17;32661:16;;:45;;;;;;;:::i;:::-;;;;;;;;32725:9;32716:5;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;32744:26:14::1;::::0;-1:-1:-1;32744:24:14::1;:26::i;:::-;32780:82;32796:65;32814:9;:26;;;32842:11;:18;;;32796:17;:65::i;:::-;32780:15;:82::i;:::-;32904:10;-1:-1:-1::0;;;;;32878:48:14::1;32891:11;32878:48;32916:9;32878:48;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;;33109:31:14::1;::::0;;;-1:-1:-1;33109:13:14::1;:31;::::0;;;;33102:38;;-1:-1:-1;;;;;;33102:38:14::1;::::0;;-1:-1:-1;1384:20:10;;-1:-1:-1;1384:18:10;;-1:-1:-1;1384:20:10:i;12297:815:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;12481:7:14::1;12480:8;:22;;;-1:-1:-1::0;12492:10:14::1;::::0;::::1;;12480:22;12472:48;;;::::0;-1:-1:-1;;;12472:48:14;;20052:2:22;12472:48:14::1;::::0;::::1;20034:21:22::0;20091:2;20071:18;;;20064:30;-1:-1:-1;;;20110:18:22;;;20103:43;20163:18;;12472:48:14::1;19850:337:22::0;12472:48:14::1;12530:24;12600:4;12574:22;:20;:22::i;:::-;12558:38;::::0;:13;:38:::1;:::i;:::-;12557:47;;;;:::i;:::-;12530:74;;12748:16;12730:15;;:34;;;;:::i;:::-;12711:14;;:54;;12703:97;;;::::0;-1:-1:-1;;;12703:97:14;;20921:2:22;12703:97:14::1;::::0;::::1;20903:21:22::0;20960:2;20940:18;;;20933:30;20999:32;20979:18;;;20972:60;21049:18;;12703:97:14::1;20719:354:22::0;12703:97:14::1;12811:32;12817:10;12829:13;12811:5;:32::i;:::-;12871:16;12853:14;;:34;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;12898:130:14;::::1;;;12911:52;12933:10;12946:16;12911:13;:52::i;:::-;12898:130;;;12978:7;::::0;:50:::1;::::0;:7:::1;::::0;::::1;-1:-1:-1::0;;;;;12978:7:14::1;12999:10;13011:16:::0;12978:20:::1;:50::i;:::-;13044:61;::::0;;11771:25:22;;;11827:2;11812:18;;11805:34;;;13094:10:14::1;::::0;13044:61:::1;::::0;11744:18:22;13044:61:14::1;;;;;;;12381:731;1384:20:10::0;:18;:20::i;10692:965:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;10947:10:14::1;::::0;::::1;;:40:::0;::::1;;;;10974:13;10961:9;:26;10947:40;10946:60;;;-1:-1:-1::0;10992:9:14::1;:14:::0;10946:60:::1;10938:100;;;::::0;-1:-1:-1;;;10938:100:14;;21280:2:22;10938:100:14::1;::::0;::::1;21262:21:22::0;21319:2;21299:18;;;21292:30;21358:29;21338:18;;;21331:57;21405:18;;10938:100:14::1;21078:351:22::0;10938:100:14::1;11239:22;11289;:20;:22::i;:::-;11265:20;:13:::0;11281:4:::1;11265:20;:::i;:::-;11264:47;;;;:::i;:::-;11239:72;;11321:33;11327:10;11339:14;11321:5;:33::i;:::-;11382:13;11364:14;;:31;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;11410:9:14::1;:13:::0;;;;:27:::1;;-1:-1:-1::0;11427:10:14::1;::::0;::::1;;11410:27;11406:171;;;11457:7;;;;;;;;;-1:-1:-1::0;;;;;11457:7:14::1;-1:-1:-1::0;;;;;11439:35:14::1;;11483:9;11439:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;11406:171;;;11511:7;::::0;:66:::1;::::0;:7:::1;::::0;::::1;-1:-1:-1::0;;;;;11511:7:14::1;11536:10;11556:4;11563:13:::0;11511:24:::1;:66::i;:::-;11593:57;::::0;;11771:25:22;;;11827:2;11812:18;;11805:34;;;11639:10:14::1;::::0;11593:57:::1;::::0;11744:18:22;11593:57:14::1;;;;;;;10767:890;1384:20:10::0;:18;:20::i;38875:124:14:-;38945:7;1603:19:10;:17;:19::i;:::-;38971:21:14::1;:19;:21::i;:::-;38964:28;;38875:124:::0;:::o;34436:171::-;34529:7;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;34555:45:14::1;34586:13;34555:30;:45::i;:::-;34548:52;;1384:20:10::0;:18;:20::i;:::-;34436:171:14;;;:::o;14198:4357::-;8025:13;;;;;;;8017:45;;;;-1:-1:-1;;;8017:45:14;;12789:2:22;8017:45:14;;;12771:21:22;12828:2;12808:18;;;12801:30;-1:-1:-1;;;12847:18:22;;;12840:49;12906:18;;8017:45:14;12587:343:22;8017:45:14;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;14461:23:14::2;51988:15:::0;14461:50:::2;;14798:7;14767:11;:27;;;-1:-1:-1::0;;;;;14767:38:14::2;;;:99;;;;;14859:7;14825:11;:30;;;-1:-1:-1::0;;;;;14825:41:14::2;;;14767:99;:145;;;;;14906:6;14886:16;-1:-1:-1::0;;;;;14886:26:14::2;;;14767:145;14746:204;;;::::0;-1:-1:-1;;;14746:204:14;;13137:2:22;14746:204:14::2;::::0;::::2;13119:21:22::0;13176:2;13156:18;;;13149:30;-1:-1:-1;;;13195:18:22;;;13188:42;13247:18;;14746:204:14::2;12935:336:22::0;14746:204:14::2;15024:19;15046:28;15062:11;15046:15;:28::i;:::-;15232:1;15201:19:::0;;;:6:::2;:19;::::0;;;;;15024:50;;-1:-1:-1;15201:33:14;15193:66:::2;;;::::0;-1:-1:-1;;;15193:66:14;;13478:2:22;15193:66:14::2;::::0;::::2;13460:21:22::0;13517:2;13497:18;;;13490:30;-1:-1:-1;;;13536:18:22;;;13529:50;13596:18;;15193:66:14::2;13276:344:22::0;15193:66:14::2;15270:20;15293:36;15310:11;:18;;;15293:16;:36::i;:::-;15270:59;;15734:26;15775:440;;;;;;;;15815:18;15775:440;;;;;;;;:::i;:::-;::::0;;15864:10:::2;15775:440;::::0;::::2;::::0;15901:14:::2;:16:::0;;15775:440;;;;;-1:-1:-1;;;15901:16:14;::::2;;;::::0;:14:::2;:16;::::0;::::2;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15775:440;;;;;;16045:16;-1:-1:-1::0;;;;;15775:440:14::2;;;;;16097:16;15775:440;;;;;;16145:12;15775:440;;;;16185:15;;15775:440;;::::0;15734:481:::2;;16225:17;16245:37;16259:11;16272:9;16245:13;:37::i;:::-;16225:57;;16314:28;16332:9;16314:17;:28::i;:::-;16292:19;::::0;;;:6:::2;:19;::::0;;;;:50;;;;16380:44:::2;16299:11:::0;16414:9;16380:20:::2;:44::i;:::-;16601:1;16558:31:::0;;;:13:::2;:31;::::0;;;;;16353:71;;-1:-1:-1;;;;;;16558:31:14::2;:45:::0;16434:218:::2;;;::::0;-1:-1:-1;;;16434:218:14;;21636:2:22;16434:218:14::2;::::0;::::2;21618:21:22::0;21675:2;21655:18;;;21648:30;-1:-1:-1;;;21694:18:22;;;21687:53;21757:18;;16434:218:14::2;21434:347:22::0;16434:218:14::2;16996:11;:18;;;16977:15;;16960:14;;:32;;;;:::i;:::-;:54;;16952:92;;;::::0;-1:-1:-1;;;16952:92:14;;14427:2:22;16952:92:14::2;::::0;::::2;14409:21:22::0;14466:2;14446:18;;;14439:30;-1:-1:-1;;;14485:18:22;;;14478:55;14550:18;;16952:92:14::2;14225:349:22::0;16952:92:14::2;17167:17;17202:15;;17187:12;:30;;;;:::i;:::-;17167:50;;17419:17;17451:174;17545:11;:30;;;17515:11;:27;;;17486:9;:26;;;:56;;;;:::i;:::-;:89;;;;:::i;:::-;17593:11;:18;;;17451:17;:174::i;:::-;17419:206;;17751:23;17798:9;17777:11;:18;;;:30;;;;:::i;:::-;17751:56;;17827:9;17818:5;;:18;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;17865:18:14::2;::::0;::::2;::::0;17846:15:::2;:37:::0;;:15:::2;::::0;:37:::2;::::0;17865:18;;17846:37:::2;:::i;:::-;::::0;;;-1:-1:-1;;17968:31:14::2;::::0;;;:13:::2;:31;::::0;;;;:44;;-1:-1:-1;;;;;;17968:44:14::2;18002:10;17968:44:::0;;::::2;::::0;;;18023:80:::2;::::0;18068:4:::2;18075:27;18093:9:::0;18075:15;:27:::2;:::i;:::-;18023:7;::::0;::::2;::::0;::::2;-1:-1:-1::0;;;;;18023:7:14::2;::::0;;:80;:24:::2;:80::i;:::-;18178:10;::::0;::::2;;18174:234;;;18204:55;18218:11;:23;;;18243:15;18204:13;:55::i;:::-;18174:234;;;18367:23;::::0;::::2;::::0;18346:7:::2;::::0;:62:::2;::::0;:7:::2;::::0;;::::2;-1:-1:-1::0;;;;;18346:7:14::2;::::0;18392:15;18346:20:::2;:62::i;:::-;18439:11;18424:62;18452:11;18465:9;18476;18424:62;;;;;;;;:::i;:::-;;;;;;;;18526:10;-1:-1:-1::0;;;;;18501:47:14::2;18513:11;18501:47;18538:9;18501:47;;;;;;:::i;:::-;;;;;;;;14351:4204;;;;;;;;;1384:20:10::1;:18;:20::i;37309:215:14:-:0;7913:11;;-1:-1:-1;;;;;7913:11:14;7891:10;:34;7883:70;;;;-1:-1:-1;;;7883:70:14;;;;;;;:::i;:::-;1317:19:10::1;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;37408:11:14::2;:45:::0;;-1:-1:-1;;;;;;37408:45:14::2;-1:-1:-1::0;;;;;37408:45:14;::::2;::::0;;::::2;::::0;;;37468:49:::2;::::0;;37495:10:::2;21998:34:22::0;;22063:2;22048:18;;22041:43;;;;37468:49:14::2;::::0;21933:18:22;37468:49:14::2;21786:304:22::0;2288:102:0;2344:13;2376:7;2369:14;;;;;:::i;6315:371::-;665:10:5;6408:4:0;6451:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;6451:34:0;;;;;;;;;;6503:35;;;;6495:85;;;;-1:-1:-1;;;6495:85:0;;22297:2:22;6495:85:0;;;22279:21:22;22336:2;22316:18;;;22309:30;22375:34;22355:18;;;22348:62;-1:-1:-1;;;22426:18:22;;;22419:35;22471:19;;6495:85:0;22095:401:22;6495:85:0;6590:67;665:10:5;6613:7:0;6622:34;6641:15;6622:16;:34;:::i;6590:67::-;-1:-1:-1;6675:4:0;;6315:371;-1:-1:-1;;;6315:371:0:o;3657:172::-;3743:4;3759:42;665:10:5;3783:9:0;3794:6;3759:9;:42::i;528:710:11:-;596:22;638:9;:14;630:54;;;;-1:-1:-1;;;630:54:11;;22703:2:22;630:54:11;;;22685:21:22;22742:2;22722:18;;;22715:30;22781:29;22761:18;;;22754:57;22828:18;;630:54:11;22501:351:22;630:54:11;716:4;-1:-1:-1;;;;;704:24:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;694:34;;743:9;738:494;758:15;;;738:494;;;795:12;;840:4;859;;864:1;859:7;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;832:35;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;794:73;;;;887:7;882:306;;1014:2;998:6;:13;:18;994:32;;;1018:8;;;994:32;1097:4;1089:6;1085:17;1075:27;;1155:6;1144:28;;;;;;;;;;;;:::i;:::-;1137:36;;-1:-1:-1;;;1137:36:11;;;;;;;;:::i;882:306::-;1215:6;1202:7;1210:1;1202:10;;;;;;;;:::i;:::-;;;;;;:19;;;;780:452;;775:3;;;;;:::i;:::-;;;;738:494;;;;528:710;;;;:::o;35811:457:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;35918:11:14::1;::::0;:20:::1;::::0;;-1:-1:-1;;;35918:20:14;;;;35877:22:::1;::::0;-1:-1:-1;;;;;35918:11:14::1;::::0;:18:::1;::::0;:20:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:11;:20;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36013:72;::::0;-1:-1:-1;;;36013:72:14;;-1:-1:-1;;;36013:72:14::1;::::0;::::1;4774:25:22::0;35877:62:14;;-1:-1:-1;;;;;;36013:31:14;::::1;::::0;::::1;::::0;4747:18:22;;36013:72:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35949:16;:146:::0;;-1:-1:-1;;;;;;35949:146:14::1;-1:-1:-1::0;;;;;35949:146:14;;::::1;;::::0;;36129:55:::1;::::0;-1:-1:-1;;;36129:55:14;;-1:-1:-1;;;36129:55:14::1;::::0;::::1;4774:25:22::0;36129:31:14;;::::1;::::0;::::1;::::0;4747:18:22;;36129:55:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36106:5;:79:::0;;-1:-1:-1;;;;;;36106:79:14::1;-1:-1:-1::0;;;;;36106:79:14;;::::1;::::0;;::::1;::::0;;;36243:7:::1;::::0;36213:39:::1;::::0;-1:-1:-1;;;36213:39:14;;36106:79:::1;36243:7:::0;;::::1;::::0;;::::1;36213:39;::::0;::::1;6569:51:22::0;36106:79:14;36213:21:::1;::::0;6542:18:22;;36213:39:14::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:48:::0;36195:15:::1;:66:::0;-1:-1:-1;1384:20:10;:18;:20::i;33645:117:14:-;33707:7;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;33733:22:14::1;:20;:22::i;25780:1739::-:0;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;25894:19:14::1;25916:28;25932:11;25916:15;:28::i;:::-;25894:50;;25954:46;25977:11;25990:9;25954:22;:46::i;:::-;26010:24;26037:44;26058:11;26071:9;26037:20;:44::i;:::-;26010:71;;26263:24;;;;;;;;;;;26234:9;:26;;;:53;;;;:::i;:::-;26215:72;;51988:15:::0;26215:72:::1;:134;;;;-1:-1:-1::0;26331:18:14::1;26307:20:::0;;:42:::1;::::0;::::1;;;;;;:::i;:::-;;26215:134;:199;;;;-1:-1:-1::0;26412:1:14::1;26369:31:::0;;;:13:::1;:31;::::0;;;;;-1:-1:-1;;;;;26369:31:14::1;:45:::0;26215:199:::1;26091:372;;;::::0;-1:-1:-1;;;26091:372:14;;21636:2:22;26091:372:14::1;::::0;::::1;21618:21:22::0;21675:2;21655:18;;;21648:30;-1:-1:-1;;;21694:18:22;;;21687:53;21757:18;;26091:372:14::1;21434:347:22::0;26091:372:14::1;26473:31;::::0;;;:13:::1;:31;::::0;;;;:44;;-1:-1:-1;;;;;;26473:44:14::1;26507:10;26473:44;::::0;;26845:30:::1;::::0;::::1;::::0;26815:27:::1;::::0;::::1;::::0;26786:26:::1;::::0;::::1;::::0;26751:174:::1;::::0;26845:30;26786:56:::1;::::0;::::1;:::i;:::-;:89;;;;:::i;26751:174::-;26719:206;;27051:23;27098:9;27077:11;:18;;;:30;;;;:::i;:::-;27121:10;::::0;27051:56;;-1:-1:-1;27121:10:14::1;;27117:332;;;27147:7;::::0;:68:::1;::::0;:7:::1;::::0;::::1;-1:-1:-1::0;;;;;27147:7:14::1;27172:10;27192:4;27199:15:::0;27147:24:::1;:68::i;:::-;27229:55;27243:11;:23;;;27268:15;27229:13;:55::i;:::-;27117:332;;;27408:23;::::0;::::1;::::0;27371:7:::1;::::0;:78:::1;::::0;:7:::1;::::0;;::::1;-1:-1:-1::0;;;;;27371:7:14::1;::::0;27396:10:::1;::::0;27433:15;27371:24:::1;:78::i;:::-;27490:10;-1:-1:-1::0;;;;;27465:47:14::1;27477:11;27465:47;27502:9;27465:47;;;;;;:::i;:::-;;;;;;;;25884:1635;;;;1384:20:10::0;:18;:20::i;19177:1351:14:-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;51988:15:14;19328:24:::1;::::0;19299:26:::1;::::0;::::1;::::0;:53:::1;::::0;-1:-1:-1;;;19328:24:14;::::1;;;::::0;19299:53:::1;:::i;:::-;:72;;;19291:98;;;::::0;-1:-1:-1;;;19291:98:14;;25726:2:22;19291:98:14::1;::::0;::::1;25708:21:22::0;25765:2;25745:18;;;25738:30;-1:-1:-1;;;25784:18:22;;;25777:43;25837:18;;19291:98:14::1;25524:337:22::0;19291:98:14::1;19431:18;19407:20:::0;;:42:::1;::::0;::::1;;;;;;:::i;:::-;;19399:69;;;::::0;-1:-1:-1;;;19399:69:14;;26068:2:22;19399:69:14::1;::::0;::::1;26050:21:22::0;26107:2;26087:18;;;26080:30;-1:-1:-1;;;26126:18:22;;;26119:44;26180:18;;19399:69:14::1;25866:338:22::0;19399:69:14::1;19514:19;19536:28;19552:11;19536:15;:28::i;:::-;19514:50;;19574:46;19597:11;19610:9;19574:22;:46::i;:::-;19685:17;19705:37;19719:11;19732:9;19705:13;:37::i;:::-;19685:57;;19864:12;19891:230;19931:9;:21;;;19970:10;19998:9;:22;;;20038:9;:18;;;20074:33;20097:9;20074:22;:33::i;:::-;19891:22;:230::i;:::-;19864:257;;20232:9;:22;;;20211:9;:18;;;:43;;;;:::i;:::-;20202:5;;:52;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;20283:18:14::1;::::0;::::1;::::0;20264:15:::1;:37:::0;;:15:::1;::::0;:37:::1;::::0;20283:18;;20264:37:::1;:::i;:::-;::::0;;;-1:-1:-1;;20318:19:14::1;::::0;;;:6:::1;:19;::::0;;;;20311:26;20347:174;::::1;;;20422:10;20392:28;20410:9:::0;20392:17:::1;:28::i;:::-;20365:68;::::0;20379:11;;20365:68:::1;::::0;;;::::1;20347:174;;;20510:10;20480:28;20498:9:::0;20480:17:::1;:28::i;:::-;20453:68;::::0;20467:11;;20453:68:::1;::::0;;;::::1;20347:174;19281:1247;;;1384:20:10::0;:18;:20::i;35055:279:14:-;35166:26;35194:28;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;35246:33:14::1;35277:1;35246:30;:33::i;:::-;35281:45;35312:13;35281:30;:45::i;:::-;35238:89;;;;1384:20:10::0;:18;:20::i;:::-;35055:279:14;;;:::o;33376:62::-;1317:19:10;:17;:19::i;:::-;1346:17;:15;:17::i;:::-;33424:7:14::1;:5;:7::i;:::-;1384:20:10::0;:18;:20::i;2143:186::-;2275:11;;;;2267:55;;;;-1:-1:-1;;;2267:55:10;;26411:2:22;2267:55:10;;;26393:21:22;26450:2;26430:18;;;26423:30;26489:33;26469:18;;;26462:61;26540:18;;2267:55:10;26209:355:22;2335:136:10;2445:11;:19;;-1:-1:-1;;2445:19:10;;;2335:136::o;2477:206::-;2658:11;:18;;-1:-1:-1;;2658:18:10;2672:4;2658:18;;;2477:206::o;9579:340:0:-;-1:-1:-1;;;;;9680:19:0;;9672:68;;;;-1:-1:-1;;;9672:68:0;;26771:2:22;9672:68:0;;;26753:21:22;26810:2;26790:18;;;26783:30;26849:34;26829:18;;;26822:62;-1:-1:-1;;;26900:18:22;;;26893:34;26944:19;;9672:68:0;26569:400:22;9672:68:0;-1:-1:-1;;;;;9758:21:0;;9750:68;;;;-1:-1:-1;;;9750:68:0;;27176:2:22;9750:68:0;;;27158:21:22;27215:2;27195:18;;;27188:30;27254:34;27234:18;;;27227:62;-1:-1:-1;;;27305:18:22;;;27298:32;27347:19;;9750:68:0;26974:398:22;9750:68:0;-1:-1:-1;;;;;9829:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9880:32;;4774:25:22;;;9880:32:0;;4747:18:22;9880:32:0;;;;;;;;9579:340;;;:::o;46920:164:14:-;47067:7;;47035:41;;46999:7;;47035:41;;47046:11;;47067:7;;;-1:-1:-1;;;;;47067:7:14;;47035:41;;;:::i;:::-;;;;;;;;;;;;;47025:52;;;;;;47018:59;;46920:164;;;:::o;46775:139::-;46883:15;;46839:7;;46865:42;;-1:-1:-1;;;46883:15:14;;-1:-1:-1;;;;;46883:15:14;46900:6;46865:17;:42::i;43958:142::-;44035:7;44082:9;44071:21;;;;;;;;:::i;43626:237::-;43731:7;43778:11;43791:9;:17;;;43810:9;:26;;;43846:7;;;;;;;;;-1:-1:-1;;;;;43846:7:14;43767:88;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;43757:99;;;;;;43750:106;;43626:237;;;;:::o;815:203:3:-;942:68;;-1:-1:-1;;;;;28541:15:22;;;942:68:3;;;28523:34:22;28593:15;;28573:18;;;28566:43;28625:18;;;28618:34;;;915:96:3;;935:5;;-1:-1:-1;;;965:27:3;28458:18:22;;942:68:3;;;;-1:-1:-1;;942:68:3;;;;;;;;;;;;;;-1:-1:-1;;;;;942:68:3;-1:-1:-1;;;;;;942:68:3;;;;;;;;;;915:19;:96::i;:::-;815:203;;;;:::o;40043:1313:14:-;40124:7;40143;:5;:7::i;:::-;40875:31;40928:1;40909:16;;:20;:52;;40960:1;40909:52;;;40940:16;;40909:52;40875:86;;40971:17;41025:23;41007:15;;40991:13;:31;;;;:::i;:::-;:57;;;;:::i;:::-;40971:77;;41058:19;41097:23;41080:14;;:40;;;;:::i;:::-;41058:62;-1:-1:-1;41209:16:14;41205:33;;-1:-1:-1;41234:4:14;;40043:1313;-1:-1:-1;;;;40043:1313:14:o;41205:33::-;41338:11;41318:16;:9;41330:4;41318:16;:::i;:::-;41317:32;;;;:::i;:::-;41310:39;40043:1313;-1:-1:-1;;;;;40043:1313:14:o;43338:174::-;43411:12;43442:63;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;43442:63:14;;;43495:9;43442:35;:63::i;7160:592:0:-;-1:-1:-1;;;;;7265:20:0;;7257:70;;;;-1:-1:-1;;;7257:70:0;;28865:2:22;7257:70:0;;;28847:21:22;28904:2;28884:18;;;28877:30;28943:34;28923:18;;;28916:62;-1:-1:-1;;;28994:18:22;;;28987:35;29039:19;;7257:70:0;28663:401:22;7257:70:0;-1:-1:-1;;;;;7345:23:0;;7337:71;;;;-1:-1:-1;;;7337:71:0;;29271:2:22;7337:71:0;;;29253:21:22;29310:2;29290:18;;;29283:30;29349:34;29329:18;;;29322:62;-1:-1:-1;;;29400:18:22;;;29393:33;29443:19;;7337:71:0;29069:399:22;7337:71:0;-1:-1:-1;;;;;7501:17:0;;7477:21;7501:17;;;:9;:17;;;;;;7536:23;;;;7528:74;;;;-1:-1:-1;;;7528:74:0;;29675:2:22;7528:74:0;;;29657:21:22;29714:2;29694:18;;;29687:30;29753:34;29733:18;;;29726:62;-1:-1:-1;;;29804:18:22;;;29797:36;29850:19;;7528:74:0;29473:402:22;7528:74:0;7632:22;7648:6;7632:13;:22;:::i;:::-;-1:-1:-1;;;;;7612:17:0;;;;;;;:9;:17;;;;;;:42;;;;7664:20;;;;;;;;:30;;7688:6;;7612:17;7664:30;;7688:6;;7664:30;:::i;:::-;;;;;;;;7727:9;-1:-1:-1;;;;;7710:35:0;7719:6;-1:-1:-1;;;;;7710:35:0;;7738:6;7710:35;;;;4774:25:22;;4762:2;4747:18;;4628:177;7710:35:0;;;;;;;;7247:505;7160:592;;;:::o;44198:273:14:-;44346:28;44364:9;44346:17;:28::i;:::-;44323:19;;;;:6;:19;;;;;;:51;44302:162;;;;;-1:-1:-1;;;44302:162:14;;30082:2:22;44302:162:14;;;30064:21:22;30101:18;;;30094:30;;;;30160:34;30140:18;;;30133:62;30231:34;30211:18;;;30204:62;30283:19;;44302:162:14;29880:428:22;46630:139:14;46711:7;46758:4;46738:16;46748:6;-1:-1:-1;;;;;46738:16:14;;;:::i;:::-;46737:25;;;;:::i;44593:533::-;44694:7;45078:11;45091:9;:26;;;45067:51;;;;;;;;30485:25:22;;;-1:-1:-1;;;;;30546:31:22;30541:2;30526:18;;30519:59;30473:2;30458:18;;30313:271;50803:279:14;-1:-1:-1;;;;;50885:22:14;;1078:20:4;1116:8;50881:195:14;;50925:7;;:32;;:7;;;-1:-1:-1;;;;;50925:7:14;50946:2;50950:6;50925:20;:32::i;50881:195::-;51006:7;;50988:44;;-1:-1:-1;;;50988:44:14;;;;;4774:25:22;;;51006:7:14;;;;-1:-1:-1;;;;;51006:7:14;;50988:36;;4747:18:22;;50988:44:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;51046:19:14;;-1:-1:-1;;;;;51046:11:14;;;-1:-1:-1;51046:19:14;;;;;-1:-1:-1;51058:6:14;;51046:19;;;;51058:6;51046:11;:19;;;;;;;;;;;;;;;;;;;;;50803:279;;:::o;634:175:3:-;743:58;;-1:-1:-1;;;;;30781:32:22;;743:58:3;;;30763:51:22;30830:18;;;30823:34;;;716:86:3;;736:5;;-1:-1:-1;;;766:23:3;30736:18:22;;743:58:3;30589:274:22;45790:430:14;45941:34;45978:21;:19;:21::i;:::-;45941:58;;46134:26;46112:19;;:48;;;;:::i;:::-;46090:19;:70;-1:-1:-1;46171:15:14;:42;;-1:-1:-1;;;;46171:42:14;-1:-1:-1;;;51988:15:14;46171:42;;;;;;45790:430::o;46284:340::-;46549:15;46526:19;;:38;;;;;;;:::i;:::-;;;;;;;;46601:15;46574:16;;:43;;;;;;;:::i;:::-;;;;-1:-1:-1;;;46284:340:14:o;42165:1071::-;42215:7;42238:13;3252:12:0;;;3165:106;42238:13:14;42234:35;;-1:-1:-1;42265:4:14;;42165:1071::o;42234:35::-;42419:26;:24;:26::i;:::-;42531:7;:5;:7::i;:::-;43079:16;43149:19;;43123:16;;43105:14;;43098:41;;;;:::i;:::-;:71;;;;:::i;:::-;43079:90;;43216:13;3252:12:0;;;3165:106;43216:13:14;43187:25;43195:9;43208:4;43187:25;:::i;:::-;43186:43;;;;:::i;:::-;43179:50;;;42165:1071;:::o;8673:483:0:-;-1:-1:-1;;;;;8756:21:0;;8748:67;;;;-1:-1:-1;;;8748:67:0;;31342:2:22;8748:67:0;;;31324:21:22;31381:2;31361:18;;;31354:30;31420:34;31400:18;;;31393:62;-1:-1:-1;;;31471:18:22;;;31464:31;31512:19;;8748:67:0;31140:397:22;8748:67:0;-1:-1:-1;;;;;8911:18:0;;8886:22;8911:18;;;:9;:18;;;;;;8947:24;;;;8939:71;;;;-1:-1:-1;;;8939:71:0;;31744:2:22;8939:71:0;;;31726:21:22;31783:2;31763:18;;;31756:30;31822:34;31802:18;;;31795:62;-1:-1:-1;;;31873:18:22;;;31866:32;31915:19;;8939:71:0;31542:398:22;8939:71:0;9041:23;9058:6;9041:14;:23;:::i;:::-;-1:-1:-1;;;;;9020:18:0;;;;;;:9;:18;;;;;:44;;;;9074:12;:22;;9090:6;;9020:18;9074:22;;9090:6;;9074:22;:::i;:::-;;;;-1:-1:-1;;9112:37:0;;4774:25:22;;;9138:1:0;;-1:-1:-1;;;;;9112:37:0;;;;;4762:2:22;4747:18;9112:37:0;4628:177:22;8023:330:0;-1:-1:-1;;;;;8106:21:0;;8098:65;;;;-1:-1:-1;;;8098:65:0;;32147:2:22;8098:65:0;;;32129:21:22;32186:2;32166:18;;;32159:30;32225:33;32205:18;;;32198:61;32276:18;;8098:65:0;31945:355:22;8098:65:0;8250:6;8234:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8266:18:0;;;;;;:9;:18;;;;;:28;;8288:6;;8266:18;:28;;8288:6;;8266:28;:::i;:::-;;;;-1:-1:-1;;8309:37:0;;4774:25:22;;;-1:-1:-1;;;;;8309:37:0;;;8326:1;;8309:37;;4762:2:22;4747:18;8309:37:0;;;;;;;8023:330;;:::o;45132:540:14:-;45539:15;;45186:7;;;;45560:4;;-1:-1:-1;;;45539:15:14;;;;51988;45520:34;;;;:::i;:::-;45498:18;;45476:19;;:40;;45498:18;;;-1:-1:-1;;;;;45498:18:14;;45476:40;:::i;:::-;:79;;;;:::i;:::-;45475:90;;;;:::i;:::-;45434:131;;45603:19;;45582:18;:40;:83;;45646:19;;45582:83;;47326:3354;47531:4;;47567:23;47578:12;47567:8;:23;:::i;:::-;47628:16;;47600:7;;47547:43;;-1:-1:-1;47600:57:14;;47628:16;47600:7;;-1:-1:-1;;;;;47600:7:14;;;;47628:16;47547:43;47600:19;:57::i;:::-;47683:16;;47743:10;;-1:-1:-1;;;;;47683:16:14;;;;:42;;51988:15;47813:19;47857:7;;;;;;;;;-1:-1:-1;;;;;47857:7:14;48065:1;48166:12;48273:24;;;;;;;;;;;48315:8;48438:4;47683:774;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;47683:774:14;;;;;;;;-1:-1:-1;;47683:774:14;;;;;;;;;;;;:::i;:::-;;;47667:1790;;49222:7;;:41;;:7;;;-1:-1:-1;;;;;49222:7:14;49243:8;49253:9;49222:20;:41::i;:::-;49305:16;;49277:7;;:49;;-1:-1:-1;;;;;49305:16:14;49277:7;;;;;;49305:16;;49277:19;:49::i;:::-;49441:5;49434:12;;;;;47667:1790;48524:9;48512;:21;48508:353;;;48646:14;48663:21;48675:9;48663;:21;:::i;:::-;48702:7;;48646:38;;-1:-1:-1;48702:38:14;;:7;;;-1:-1:-1;;;;;48702:7:14;48723:8;48646:38;48702:20;:38::i;:::-;48786:16;;48758:7;;:49;;-1:-1:-1;;;;;48786:16:14;48758:7;;;;;;48786:16;;48758:19;:49::i;:::-;48837:9;48825:21;;48535:326;48508:353;-1:-1:-1;49536:542:14;;;;;;;;-1:-1:-1;;;;;49536:542:14;;;;;-1:-1:-1;49536:542:14;;;;;;49685:7;;;;;;;;49536:542;;;;;;;;;;;;;49765:4;49536:542;;;;;;;;;;49857:24;;49536:542;;;;-1:-1:-1;;;49857:24:14;;;;51988:15;49838:43;;;;:::i;:::-;49536:542;;49907:1;49536:542;;;;;;49936:24;49948:12;49936:9;:24;:::i;:::-;49536:542;;;;;;;;50038:24;;-1:-1:-1;;;50038:24:14;;;;;;49536:542;;;;;;;;50177:7;;49467:611;;-1:-1:-1;50177:62:14;;50038:24;50177:7;;-1:-1:-1;;;;;50177:7:14;;50202:10;;50222:4;;50229:9;;50177:24;:62;:::i;:::-;50277:16;;50249:7;;:57;;-1:-1:-1;;;;;50277:16:14;50249:7;;;;;;50277:16;50296:9;50249:19;:57::i;:::-;50366:16;;50412:10;;50366:207;;-1:-1:-1;;;50366:207:14;;-1:-1:-1;;;;;50366:16:14;;;;:32;;:207;;51988:15;;50474:19;;50507:7;;50528:8;;50558:4;;50366:207;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;50669:4:14;;47326:3354;-1:-1:-1;;;;;;;;47326:3354:14:o;41362:797::-;41664:5;;41629:7;;:32;;-1:-1:-1;;;41629:32:14;;41655:4;41629:32;;;6569:51:22;41604:22:14;;41664:5;41629:7;;;-1:-1:-1;;;;;41629:7:14;;:17;;6542:18:22;;41629:32:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:40;;;;:::i;:::-;41604:65;;41700:14;;41683;:31;41679:474;;;42082:14;;42065:31;;:14;:31;:::i;:::-;42038:16;;:59;;;;;;;:::i;:::-;;;;-1:-1:-1;;42111:14:14;:31;41362:797::o;3022:751:3:-;3441:23;3467:69;3495:4;3467:69;;;;;;;;;;;;;;;;;3475:5;-1:-1:-1;;;;;3467:27:3;;;:69;;;;;:::i;:::-;3550:17;;3441:95;;-1:-1:-1;3550:21:3;3546:221;;3690:10;3679:30;;;;;;;;;;;;:::i;:::-;3671:85;;;;-1:-1:-1;;;3671:85:3;;35488:2:22;3671:85:3;;;35470:21:22;35527:2;35507:18;;;35500:30;35566:34;35546:18;;;35539:62;-1:-1:-1;;;35617:18:22;;;35610:40;35667:19;;3671:85:3;35286:406:22;4121:330:8;4273:12;4297:19;4319:42;4335:20;4357:3;4319:15;:42::i;:::-;4297:64;;4395:20;4417:6;4425:18;4437:5;4425:11;:18::i;:::-;4378:66;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4371:73;;;4121:330;;;;;:::o;1278:613:3:-;1643:10;;;1642:62;;-1:-1:-1;1659:39:3;;-1:-1:-1;;;1659:39:3;;1683:4;1659:39;;;21998:34:22;-1:-1:-1;;;;;22068:15:22;;;22048:18;;;22041:43;1659:15:3;;;;;21933:18:22;;1659:39:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;1642:62;1634:150;;;;-1:-1:-1;;;1634:150:3;;36562:2:22;1634:150:3;;;36544:21:22;36601:2;36581:18;;;36574:30;36640:34;36620:18;;;36613:62;-1:-1:-1;;;36691:18:22;;;36684:52;36753:19;;1634:150:3;36360:418:22;1634:150:3;1821:62;;-1:-1:-1;;;;;30781:32:22;;1821:62:3;;;30763:51:22;30830:18;;;30823:34;;;1794:90:3;;1814:5;;-1:-1:-1;;;1844:22:3;30736:18:22;;1821:62:3;30589:274:22;3573:193:4;3676:12;3707:52;3729:6;3737:4;3743:1;3746:12;3707:21;:52::i;:::-;3700:59;3573:193;-1:-1:-1;;;;3573:193:4:o;6928:295:8:-;7057:27;;7029:12;;7057:31;7053:164;;7133:3;7111:31;;;;;;;;:::i;:::-;;;;;;;;;;;;;7104:38;;;;7053:164;7197:3;7180:26;;;;;;;;:::i;2586:182::-;2647:12;2695:35;2726:3;2715:7;:14;;2695:19;:35::i;:::-;2732:28;2752:7;2732:19;:28::i;:::-;2678:83;;;;;;37957:19:22;;;;37992:12;;37985:28;38029:12;;2678:83:8;;;;;;;;;;;;2671:90;;2586:182;;;:::o;4600:523:4:-;4727:12;4784:5;4759:21;:30;;4751:81;;;;-1:-1:-1;;;4751:81:4;;38254:2:22;4751:81:4;;;38236:21:22;38293:2;38273:18;;;38266:30;38332:34;38312:18;;;38305:62;-1:-1:-1;;;38383:18:22;;;38376:36;38429:19;;4751:81:4;38052:402:22;4751:81:4;1078:20;;4842:60;;;;-1:-1:-1;;;4842:60:4;;38661:2:22;4842:60:4;;;38643:21:22;38700:2;38680:18;;;38673:30;38739:31;38719:18;;;38712:59;38788:18;;4842:60:4;38459:353:22;4842:60:4;4973:12;4987:23;5014:6;-1:-1:-1;;;;;5014:11:4;5034:5;5042:4;5014:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4972:75;;;;5064:52;5082:7;5091:10;5103:12;5064:17;:52::i;:::-;5057:59;4600:523;-1:-1:-1;;;;;;;4600:523:4:o;897:1306:8:-;965:7;1008:9;1028:7;1020:16;;1008:28;;1088:1;1092:66;1088:70;1084:74;;1182:1;1186:5;1182:9;1177:1;:15;1196:66;1176:86;1172:90;;1286:1;1290:5;1286:9;1281:1;:15;1300:66;1280:86;1276:90;;1390:1;1394:5;1390:9;1385:1;:15;1404:66;1384:86;1380:90;;1494:1;1498:4;1494:8;1489:1;:14;1507:66;1488:85;1484:89;;1597:1;1601:4;1597:8;1592:1;:14;1610:66;1591:85;1587:89;;1717:9;1804:1;1730;1734:66;1730:70;1729:76;;;;;:::i;:::-;;1906:1;1836:66;1832:70;;1831:76;2008:1;1938:66;1934:70;;1933:76;2037:5;2032:11;2047:4;2031:20;2027:24;;;2054:66;2027:93;;;-1:-1:-1;;;897:1306:8:o;7083:725:4:-;7198:12;7226:7;7222:580;;;-1:-1:-1;7256:10:4;7249:17;;7222:580;7367:17;;:21;7363:429;;7625:10;7619:17;7685:15;7672:10;7668:2;7664:19;7657:44;7363:429;7764:12;7757:20;;-1:-1:-1;;;7757:20:4;;;;;;;;:::i;14:258:22:-;86:1;96:113;110:6;107:1;104:13;96:113;;;186:11;;;180:18;167:11;;;160:39;132:2;125:10;96:113;;;227:6;224:1;221:13;218:48;;;-1:-1:-1;;262:1:22;244:16;;237:27;14:258::o;277:::-;319:3;357:5;351:12;384:6;379:3;372:19;400:63;456:6;449:4;444:3;440:14;433:4;426:5;422:16;400:63;:::i;:::-;517:2;496:15;-1:-1:-1;;492:29:22;483:39;;;;524:4;479:50;;277:258;-1:-1:-1;;277:258:22:o;540:220::-;689:2;678:9;671:21;652:4;709:45;750:2;739:9;735:18;727:6;709:45;:::i;765:118::-;851:5;844:13;837:21;830:5;827:32;817:60;;873:1;870;863:12;888:241;944:6;997:2;985:9;976:7;972:23;968:32;965:52;;;1013:1;1010;1003:12;965:52;1052:9;1039:23;1071:28;1093:5;1071:28;:::i;1134:131::-;-1:-1:-1;;;;;1209:31:22;;1199:42;;1189:70;;1255:1;1252;1245:12;1270:134;1338:20;;1367:31;1338:20;1367:31;:::i;1409:315::-;1477:6;1485;1538:2;1526:9;1517:7;1513:23;1509:32;1506:52;;;1554:1;1551;1544:12;1506:52;1593:9;1580:23;1612:31;1637:5;1612:31;:::i;:::-;1662:5;1714:2;1699:18;;;;1686:32;;-1:-1:-1;;;1409:315:22:o;2329:127::-;2390:10;2385:3;2381:20;2378:1;2371:31;2421:4;2418:1;2411:15;2445:4;2442:1;2435:15;2461:248;2528:2;2522:9;2570:4;2558:17;;-1:-1:-1;;;;;2590:34:22;;2626:22;;;2587:62;2584:88;;;2652:18;;:::i;:::-;2688:2;2681:22;2461:248;:::o;2714:129::-;-1:-1:-1;;;;;2792:5:22;2788:30;2781:5;2778:41;2768:69;;2833:1;2830;2823:12;2848:132;2915:20;;2944:30;2915:20;2944:30;:::i;2985:121::-;3070:10;3063:5;3059:22;3052:5;3049:33;3039:61;;3096:1;3093;3086:12;3111:132;3178:20;;3207:30;3178:20;3207:30;:::i;3248:1000::-;3306:5;3336:6;3379:2;3367:9;3362:3;3358:19;3354:28;3351:48;;;3395:1;3392;3385:12;3351:48;3428:2;3422:9;3458:15;;;;-1:-1:-1;;;;;3488:34:22;;3524:22;;;3485:62;3482:88;;;3550:18;;:::i;:::-;3590:10;3586:2;3579:22;3619:6;3610:15;;3662:9;3649:23;3641:6;3634:39;3725:2;3714:9;3710:18;3697:32;3682:47;;3738:32;3762:7;3738:32;:::i;:::-;3803:7;3798:2;3790:6;3786:15;3779:32;3844:38;3878:2;3867:9;3863:18;3844:38;:::i;:::-;3839:2;3831:6;3827:15;3820:63;3916:38;3950:2;3939:9;3935:18;3916:38;:::i;:::-;3911:2;3903:6;3899:15;3892:63;4017:3;4006:9;4002:19;3989:33;3983:3;3975:6;3971:16;3964:59;4057:38;4090:3;4079:9;4075:19;4057:38;:::i;:::-;4051:3;4043:6;4039:16;4032:64;4130:38;4163:3;4152:9;4148:19;4130:38;:::i;:::-;4124:3;4116:6;4112:16;4105:64;4203:38;4236:3;4225:9;4221:19;4203:38;:::i;:::-;4197:3;4189:6;4185:16;4178:64;;;3248:1000;;;;:::o;4253:370::-;4349:6;4357;4410:3;4398:9;4389:7;4385:23;4381:33;4378:53;;;4427:1;4424;4417:12;4378:53;4450:49;4491:7;4480:9;4450:49;:::i;:::-;4440:59;;4549:3;4538:9;4534:19;4521:33;4563:30;4587:5;4563:30;:::i;:::-;4612:5;4602:15;;;4253:370;;;;;:::o;5106:980::-;5230:6;5238;5282:9;5273:7;5269:23;5312:3;5308:2;5304:12;5301:32;;;5329:1;5326;5319:12;5301:32;5352:49;5393:7;5382:9;5352:49;:::i;:::-;5342:59;-1:-1:-1;5436:4:22;-1:-1:-1;;5417:17:22;;5413:28;5410:48;;;5454:1;5451;5444:12;5410:48;;5480:17;;:::i;:::-;5549:3;5538:9;5534:19;5521:33;5585:1;5576:7;5573:14;5563:42;;5601:1;5598;5591:12;5563:42;5614:22;;5668:39;5702:3;5687:19;;5668:39;:::i;:::-;5663:2;5656:5;5652:14;5645:63;5740:38;5773:3;5762:9;5758:19;5740:38;:::i;:::-;5735:2;5728:5;5724:14;5717:62;5811:38;5844:3;5833:9;5829:19;5811:38;:::i;:::-;5806:2;5799:5;5795:14;5788:62;5883:38;5916:3;5905:9;5901:19;5883:38;:::i;:::-;5877:3;5866:15;;5859:63;5983:3;5968:19;;5955:33;5949:3;5938:15;;5931:58;6050:3;6035:19;;;6022:33;6016:3;6005:15;;5998:58;-1:-1:-1;5106:980:22;5870:5;;-1:-1:-1;5106:980:22:o;6879:180::-;6938:6;6991:2;6979:9;6970:7;6966:23;6962:32;6959:52;;;7007:1;7004;6997:12;6959:52;-1:-1:-1;7030:23:22;;6879:180;-1:-1:-1;6879:180:22:o;7064:456::-;7141:6;7149;7157;7210:2;7198:9;7189:7;7185:23;7181:32;7178:52;;;7226:1;7223;7216:12;7178:52;7265:9;7252:23;7284:31;7309:5;7284:31;:::i;:::-;7334:5;-1:-1:-1;7391:2:22;7376:18;;7363:32;7404:33;7363:32;7404:33;:::i;:::-;7064:456;;7456:7;;-1:-1:-1;;;7510:2:22;7495:18;;;;7482:32;;7064:456::o;7525:245::-;7583:6;7636:2;7624:9;7615:7;7611:23;7607:32;7604:52;;;7652:1;7649;7642:12;7604:52;7691:9;7678:23;7710:30;7734:5;7710:30;:::i;7964:309::-;8029:6;8037;8090:2;8078:9;8069:7;8065:23;8061:32;8058:52;;;8106:1;8103;8096:12;8058:52;8142:9;8129:23;8119:33;;8202:2;8191:9;8187:18;8174:32;8215:28;8237:5;8215:28;:::i;8458:247::-;8517:6;8570:2;8558:9;8549:7;8545:23;8541:32;8538:52;;;8586:1;8583;8576:12;8538:52;8625:9;8612:23;8644:31;8669:5;8644:31;:::i;9360:626::-;9457:6;9465;9518:2;9506:9;9497:7;9493:23;9489:32;9486:52;;;9534:1;9531;9524:12;9486:52;9574:9;9561:23;-1:-1:-1;;;;;9644:2:22;9636:6;9633:14;9630:34;;;9660:1;9657;9650:12;9630:34;9698:6;9687:9;9683:22;9673:32;;9743:7;9736:4;9732:2;9728:13;9724:27;9714:55;;9765:1;9762;9755:12;9714:55;9805:2;9792:16;9831:2;9823:6;9820:14;9817:34;;;9847:1;9844;9837:12;9817:34;9900:7;9895:2;9885:6;9882:1;9878:14;9874:2;9870:23;9866:32;9863:45;9860:65;;;9921:1;9918;9911:12;9860:65;9952:2;9944:11;;;;;9974:6;;-1:-1:-1;9360:626:22;;-1:-1:-1;;;;9360:626:22:o;9991:801::-;10151:4;10180:2;10220;10209:9;10205:18;10250:2;10239:9;10232:21;10273:6;10308;10302:13;10339:6;10331;10324:22;10377:2;10366:9;10362:18;10355:25;;10439:2;10429:6;10426:1;10422:14;10411:9;10407:30;10403:39;10389:53;;10477:2;10469:6;10465:15;10498:1;10508:255;10522:6;10519:1;10516:13;10508:255;;;10615:2;10611:7;10599:9;10591:6;10587:22;10583:36;10578:3;10571:49;10643:40;10676:6;10667;10661:13;10643:40;:::i;:::-;10633:50;-1:-1:-1;10741:12:22;;;;10706:15;;;;10544:1;10537:9;10508:255;;;-1:-1:-1;10780:6:22;;9991:801;-1:-1:-1;;;;;;;9991:801:22:o;11204:388::-;11272:6;11280;11333:2;11321:9;11312:7;11308:23;11304:32;11301:52;;;11349:1;11346;11339:12;11301:52;11388:9;11375:23;11407:31;11432:5;11407:31;:::i;:::-;11457:5;-1:-1:-1;11514:2:22;11499:18;;11486:32;11527:33;11486:32;11527:33;:::i;11850:380::-;11929:1;11925:12;;;;11972;;;11993:61;;12047:4;12039:6;12035:17;12025:27;;11993:61;12100:2;12092:6;12089:14;12069:18;12066:38;12063:161;;;12146:10;12141:3;12137:20;12134:1;12127:31;12181:4;12178:1;12171:15;12209:4;12206:1;12199:15;12063:161;;11850:380;;;:::o;12235:347::-;12437:2;12419:21;;;12476:2;12456:18;;;12449:30;12515:25;12510:2;12495:18;;12488:53;12573:2;12558:18;;12235:347::o;13625:127::-;13686:10;13681:3;13677:20;13674:1;13667:31;13717:4;13714:1;13707:15;13741:4;13738:1;13731:15;13757:127;13818:10;13813:3;13809:20;13806:1;13799:31;13849:4;13846:1;13839:15;13873:4;13870:1;13863:15;13889:201;13927:3;13955:10;14000:2;13993:5;13989:14;14027:2;14018:7;14015:15;14012:41;;;14033:18;;:::i;:::-;14082:1;14069:15;;13889:201;-1:-1:-1;;;13889:201:22:o;14095:125::-;14135:4;14163:1;14160;14157:8;14154:34;;;14168:18;;:::i;:::-;-1:-1:-1;14205:9:22;;14095:125::o;14579:128::-;14619:3;14650:1;14646:6;14643:1;14640:13;14637:39;;;14656:18;;:::i;:::-;-1:-1:-1;14692:9:22;;14579:128::o;14712:711::-;14795:5;14789:12;14784:3;14777:25;14848:4;14841:5;14837:16;14831:23;-1:-1:-1;;;;;14941:2:22;14927:12;14923:21;14916:4;14911:3;14907:14;14900:45;14993:4;14986:5;14982:16;14976:23;14954:45;;15035:1;15031;15026:3;15022:11;15018:19;15089:2;15073:14;15069:23;15062:4;15057:3;15053:14;15046:47;15154:2;15146:4;15139:5;15135:16;15129:23;15125:32;15118:4;15113:3;15109:14;15102:56;;15207:4;15200:5;15196:16;15190:23;15183:4;15178:3;15174:14;15167:47;15275:2;15267:4;15260:5;15256:16;15250:23;15246:32;15239:4;15234:3;15230:14;15223:56;15340:2;15332:4;15325:5;15321:16;15315:23;15311:32;15304:4;15299:3;15295:14;15288:56;;;15405:10;15397:4;15390:5;15386:16;15380:23;15376:40;15369:4;15364:3;15360:14;15353:64;14712:711;;:::o;15428:790::-;15507:5;15501:12;15539:1;15535:2;15532:9;15522:140;;15584:10;15579:3;15575:20;15572:1;15565:31;15619:4;15616:1;15609:15;15647:4;15644:1;15637:15;15522:140;15671:15;;15739:4;15728:16;;;15722:23;-1:-1:-1;;;;;15718:49:22;15702:14;;;15695:73;15814:4;15803:16;;;15797:23;;15829:47;;15861:14;;15797:23;4886:10;4875:22;4863:35;;4810:94;15829:47;;15924:4;15917:5;15913:16;15907:23;15939:49;15982:4;15977:3;15973:14;15957;-1:-1:-1;;;;;2082:30:22;2070:43;;2017:102;15939:49;;16036:4;16029:5;16025:16;16019:23;16051:49;16094:4;16089:3;16085:14;16069;4886:10;4875:22;4863:35;;4810:94;16051:49;-1:-1:-1;16149:4:22;16138:16;;;16132:23;16116:14;;;16109:47;16205:4;16194:16;;;16188:23;16172:14;;16165:47;15428:790::o;16223:478::-;16525:3;16510:19;;16538:48;16514:9;16568:6;16538:48;:::i;:::-;16595:56;16646:3;16635:9;16631:19;16623:6;16595:56;:::i;:::-;16688:6;16682:3;16671:9;16667:19;16660:35;16223:478;;;;;;:::o;17115:249::-;17184:6;17237:2;17225:9;17216:7;17212:23;17208:32;17205:52;;;17253:1;17250;17243:12;17205:52;17285:9;17279:16;17304:30;17328:5;17304:30;:::i;17369:249::-;17438:6;17491:2;17479:9;17470:7;17466:23;17462:32;17459:52;;;17507:1;17504;17497:12;17459:52;17539:9;17533:16;17558:30;17582:5;17558:30;:::i;17623:184::-;17693:6;17746:2;17734:9;17725:7;17721:23;17717:32;17714:52;;;17762:1;17759;17752:12;17714:52;-1:-1:-1;17785:16:22;;17623:184;-1:-1:-1;17623:184:22:o;18156:228::-;18195:3;18223:10;18260:2;18257:1;18253:10;18290:2;18287:1;18283:10;18321:3;18317:2;18313:12;18308:3;18305:21;18302:47;;;18329:18;;:::i;:::-;18365:13;;18156:228;-1:-1:-1;;;;18156:228:22:o;19081:236::-;19120:3;-1:-1:-1;;;;;19193:2:22;19190:1;19186:10;19223:2;19220:1;19216:10;19254:3;19250:2;19246:12;19241:3;19238:21;19235:47;;;19262:18;;:::i;19322:265::-;19361:3;19389:9;;;19414:10;;-1:-1:-1;;;;;19433:27:22;;;19426:35;;19410:52;19407:78;;;19465:18;;:::i;:::-;-1:-1:-1;;;19512:19:22;;;19505:27;;19497:36;;19494:62;;;19536:18;;:::i;:::-;-1:-1:-1;;19572:9:22;;19322:265::o;19592:253::-;19780:3;19765:19;;19793:46;19769:9;19821:6;19793:46;:::i;20192:168::-;20232:7;20298:1;20294;20290:6;20286:14;20283:1;20280:21;20275:1;20268:9;20261:17;20257:45;20254:71;;;20305:18;;:::i;:::-;-1:-1:-1;20345:9:22;;20192:168::o;20365:127::-;20426:10;20421:3;20417:20;20414:1;20407:31;20457:4;20454:1;20447:15;20481:4;20478:1;20471:15;20497:217;20537:1;20563;20553:132;;20607:10;20602:3;20598:20;20595:1;20588:31;20642:4;20639:1;20632:15;20670:4;20667:1;20660:15;20553:132;-1:-1:-1;20699:9:22;;20497:217::o;22857:127::-;22918:10;22913:3;22909:20;22906:1;22899:31;22949:4;22946:1;22939:15;22973:4;22970:1;22963:15;22989:521;23066:4;23072:6;23132:11;23119:25;23226:2;23222:7;23211:8;23195:14;23191:29;23187:43;23167:18;23163:68;23153:96;;23245:1;23242;23235:12;23153:96;23272:33;;23324:20;;;-1:-1:-1;;;;;;23356:30:22;;23353:50;;;23399:1;23396;23389:12;23353:50;23432:4;23420:17;;-1:-1:-1;23463:14:22;23459:27;;;23449:38;;23446:58;;;23500:1;23497;23490:12;23446:58;22989:521;;;;;:::o;23515:271::-;23698:6;23690;23685:3;23672:33;23654:3;23724:16;;23749:13;;;23724:16;23515:271;-1:-1:-1;23515:271:22:o;23791:884::-;23871:6;23924:2;23912:9;23903:7;23899:23;23895:32;23892:52;;;23940:1;23937;23930:12;23892:52;23973:9;23967:16;-1:-1:-1;;;;;24043:2:22;24035:6;24032:14;24029:34;;;24059:1;24056;24049:12;24029:34;24097:6;24086:9;24082:22;24072:32;;24142:7;24135:4;24131:2;24127:13;24123:27;24113:55;;24164:1;24161;24154:12;24113:55;24193:2;24187:9;24215:2;24211;24208:10;24205:36;;;24221:18;;:::i;:::-;24296:2;24290:9;24264:2;24350:13;;-1:-1:-1;;24346:22:22;;;24370:2;24342:31;24338:40;24326:53;;;24394:18;;;24414:22;;;24391:46;24388:72;;;24440:18;;:::i;:::-;24480:10;24476:2;24469:22;24515:2;24507:6;24500:18;24555:7;24550:2;24545;24541;24537:11;24533:20;24530:33;24527:53;;;24576:1;24573;24566:12;24527:53;24589:55;24641:2;24636;24628:6;24624:15;24619:2;24615;24611:11;24589:55;:::i;24680:135::-;24719:3;-1:-1:-1;;24740:17:22;;24737:43;;;24760:18;;:::i;:::-;-1:-1:-1;24807:1:22;24796:13;;24680:135::o;24820:251::-;24890:6;24943:2;24931:9;24922:7;24918:23;24914:32;24911:52;;;24959:1;24956;24949:12;24911:52;24991:9;24985:16;25010:31;25035:5;25010:31;:::i;25076:443::-;25172:6;25225:2;25213:9;25204:7;25200:23;25196:32;25193:52;;;25241:1;25238;25231:12;25193:52;25274:2;25268:9;25316:2;25308:6;25304:15;25385:6;25373:10;25370:22;-1:-1:-1;;;;;25337:10:22;25334:34;25331:62;25328:88;;;25396:18;;:::i;:::-;25432:2;25425:22;25471:16;;25456:32;;-1:-1:-1;25463:6:22;25076:443;-1:-1:-1;25076:443:22:o;27377:357::-;27597:3;27582:19;;27610:48;27586:9;27640:6;27610:48;:::i;:::-;-1:-1:-1;;;;;27695:32:22;;;;27689:3;27674:19;;;;27667:61;27377:357;;-1:-1:-1;27377:357:22:o;27739:539::-;28011:3;27996:19;;28024:48;28000:9;28054:6;28024:48;:::i;:::-;28121:10;28109:23;;;;28103:3;28088:19;;28081:52;-1:-1:-1;;;;;28170:31:22;;;;28164:3;28149:19;;28142:60;-1:-1:-1;;;;;28239:32:22;28233:3;28218:19;;;28211:61;27739:539;;-1:-1:-1;27739:539:22:o;30868:267::-;30907:4;30936:9;;;30961:10;;-1:-1:-1;;;30980:19:22;;30973:27;;30957:44;30954:70;;;31004:18;;:::i;:::-;-1:-1:-1;;;;;31051:27:22;;31044:35;;31036:44;;31033:70;;;31083:18;;:::i;:::-;-1:-1:-1;;31120:9:22;;30868:267::o;32305:933::-;32656:4;32685:3;32715:6;32704:9;32697:25;32741:10;32799:2;32791:6;32787:15;32782:2;32771:9;32767:18;32760:43;32839:2;32834;32823:9;32819:18;32812:30;32859:45;32900:2;32889:9;32885:18;32877:6;32859:45;:::i;:::-;-1:-1:-1;;;;;32978:15:22;;;32973:2;32958:18;;32951:43;33025:3;33010:19;;33003:35;;;;32931:3;33054:19;;33047:35;;;;-1:-1:-1;;33119:15:22;;;;33113:3;33098:19;;33091:44;33172:15;;;33166:3;33151:19;;33144:44;33219:3;33204:19;;;33197:35;;;;32851:53;32305:933;-1:-1:-1;;;32305:933:22:o;33432:1599::-;33730:4;33759:3;33789:6;33778:9;33771:25;33844:10;33836:6;33832:23;33827:2;33816:9;33812:18;33805:51;33892:2;33887;33876:9;33872:18;33865:30;33912:45;33953:2;33942:9;33938:18;33930:6;33912:45;:::i;:::-;33904:53;;;33966;34015:2;34004:9;34000:18;33991:6;33985:13;-1:-1:-1;;;;;6380:31:22;6368:44;;6314:104;33966:53;34066:2;34054:15;;34048:22;-1:-1:-1;;;;;6380:31:22;;34127:3;34112:19;;6368:44;-1:-1:-1;34181:2:22;34169:15;;34163:22;-1:-1:-1;;;;;6380:31:22;;34244:3;34229:19;;6368:44;-1:-1:-1;34298:2:22;34286:15;;34280:22;1799:13;;1792:21;34358:3;34343:19;;1780:34;34311:52;34418:3;34410:6;34406:16;34400:23;34394:3;34383:9;34379:19;34372:52;34461:3;34453:6;34449:16;34443:23;34485:3;34524:2;34519;34508:9;34504:18;34497:30;34564:3;34556:6;34552:16;34546:23;34536:33;;34588:3;34627:2;34622;34611:9;34607:18;34600:30;34667:3;34659:6;34655:16;34649:23;34639:33;;34691:3;34730:2;34725;34714:9;34710:18;34703:30;34788:2;34780:6;34776:15;34770:22;34764:3;34753:9;34749:19;34742:51;34848:2;34840:6;34836:15;34830:22;34824:3;34813:9;34809:19;34802:51;34908:2;34900:6;34896:15;34890:22;34884:3;34873:9;34869:19;34862:51;;;;;34922:47;34964:3;34953:9;34949:19;34941:6;-1:-1:-1;;;;;6380:31:22;6368:44;;6314:104;34922:47;-1:-1:-1;;;;;6380:31:22;;35020:3;35005:19;;6368:44;34978:47;6314:104;35036:245;35103:6;35156:2;35144:9;35135:7;35131:23;35127:32;35124:52;;;35172:1;35169;35162:12;35124:52;35204:9;35198:16;35223:28;35245:5;35223:28;:::i;35697:658::-;35918:3;35956:6;35950:13;35972:53;36018:6;36013:3;36006:4;35998:6;35994:17;35972:53;:::i;:::-;36088:13;;36047:16;;;;36110:57;36088:13;36047:16;36144:4;36132:17;;36110:57;:::i;:::-;36234:13;;36189:20;;;36256:57;36234:13;36189:20;36290:4;36278:17;;36256:57;:::i;:::-;36329:20;;35697:658;-1:-1:-1;;;;;35697:658:22:o;36783:570::-;-1:-1:-1;;;37139:3:22;37132:16;37114:3;37177:6;37171:13;37193:61;37247:6;37243:1;37238:3;37234:11;37227:4;37219:6;37215:17;37193:61;:::i;:::-;-1:-1:-1;;;37313:1:22;37273:16;;;;37305:10;;;37298:23;-1:-1:-1;37345:1:22;37337:10;;36783:570;-1:-1:-1;36783:570:22:o;37358:437::-;37588:3;37626:6;37620:13;37642:53;37688:6;37683:3;37676:4;37668:6;37664:17;37642:53;:::i;:::-;-1:-1:-1;;;37717:16:22;;37742:18;;;-1:-1:-1;37787:1:22;37776:13;;37358:437;-1:-1:-1;37358:437:22:o;38817:274::-;38946:3;38984:6;38978:13;39000:53;39046:6;39041:3;39034:4;39026:6;39022:17;39000:53;:::i;:::-;39069:16;;;;;38817:274;-1:-1:-1;;38817:274:22:o"
                        },
                        "methodIdentifiers": {
                            "addLiquidity(uint256)": "51c6590a",
                            "allowance(address,address)": "dd62ed3e",
                            "approve(address,uint256)": "095ea7b3",
                            "balanceOf(address)": "70a08231",
                            "bonds()": "135c404e",
                            "bridgeAdmin()": "a6af2dfe",
                            "changeAdmin(address)": "8f283970",
                            "decimals()": "313ce567",
                            "decreaseAllowance(address,uint256)": "a457c2d7",
                            "disputeRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))": "cefed55f",
                            "exchangeRateCurrent()": "bd6d894d",
                            "getAccumulatedFees()": "5df45a37",
                            "getCurrentTime()": "29cb924d",
                            "getLiquidityUtilization(uint256)": "ed4de3a3",
                            "getRelayAncillaryData((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))": "1bf71c38",
                            "identifier()": "7998a1c4",
                            "increaseAllowance(address,uint256)": "39509351",
                            "instantRelays(bytes32)": "b454e326",
                            "isWethPool()": "cc2c929e",
                            "l1Token()": "c01e1bd6",
                            "lastLpFeeUpdate()": "f1d24bab",
                            "liquidReserves()": "b2084202",
                            "liquidityUtilizationCurrent()": "19e9d894",
                            "liquidityUtilizationPostRelay(uint256)": "62822d34",
                            "lpFeeRatePerSecond()": "11cfc159",
                            "multicall(bytes[])": "ac9650d8",
                            "name()": "06fdde03",
                            "numberOfRelays()": "d412f5a4",
                            "optimisticOracle()": "22302922",
                            "optimisticOracleLiveness()": "173684c5",
                            "pendingReserves()": "87a515d3",
                            "proposerBondPct()": "c73a32c3",
                            "relayAndSpeedUp((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)": "753b91bb",
                            "relayDeposit((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)": "13111725",
                            "relays(bytes32)": "df738fc8",
                            "relaysEnabled()": "be0ba122",
                            "removeLiquidity(uint256,bool)": "4f52fd17",
                            "setCurrentTime(uint256)": "22f8e566",
                            "setLpFeeRatePerSecond(uint64)": "27f224ca",
                            "setRelaysEnabled(bool)": "08ed5b14",
                            "settleRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))": "3fa856c9",
                            "speedUpRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))": "bec73ade",
                            "store()": "975057e7",
                            "symbol()": "95d89b41",
                            "sync()": "fff6cae9",
                            "syncUmaEcosystemParams()": "b5351ee2",
                            "syncWithBridgeAdminParams()": "3cc400b3",
                            "timerAddress()": "1c39c38d",
                            "totalSupply()": "18160ddd",
                            "transfer(address,uint256)": "a9059cbb",
                            "transferFrom(address,address,uint256)": "23b872dd",
                            "undistributedLpFees()": "4464fae4",
                            "utilizedReserves()": "66db5240"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_lpTokenName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_lpTokenSymbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_bridgeAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_l1Token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"_lpFeeRatePerSecond\",\"type\":\"uint64\"},{\"internalType\":\"bool\",\"name\":\"_isWethPool\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_timer\",\"type\":\"address\"}],\"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\":false,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"BridgePoolAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"indexed\":false,\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relay\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"relayAncillaryDataHash\",\"type\":\"bytes32\"}],\"name\":\"DepositRelayed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpTokensMinted\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"}],\"name\":\"LiquidityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"lpTokensBurnt\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"liquidityProvider\",\"type\":\"address\"}],\"name\":\"LiquidityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"LpFeeRateSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"relayHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"RelayCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"relayHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"}],\"name\":\"RelayDisputed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relay\",\"type\":\"tuple\"}],\"name\":\"RelaySettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"depositHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"instantRelayer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relay\",\"type\":\"tuple\"}],\"name\":\"RelaySpedUp\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"newRelaysEnabled\",\"type\":\"bool\"}],\"name\":\"RelaysEnabledSet\",\"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\":\"uint256\",\"name\":\"l1TokenAmount\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"bonds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bridgeAdmin\",\"outputs\":[{\"internalType\":\"contract BridgeAdminInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"disputeRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"exchangeRateCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccumulatedFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relayedAmount\",\"type\":\"uint256\"}],\"name\":\"getLiquidityUtilization\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"utilizationCurrent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"utilizationPostRelay\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"getRelayAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"instantRelays\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isWethPool\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastLpFeeUpdate\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liquidityUtilizationCurrent\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"relayedAmount\",\"type\":\"uint256\"}],\"name\":\"liquidityUtilizationPostRelay\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lpFeeRatePerSecond\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfRelays\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optimisticOracle\",\"outputs\":[{\"internalType\":\"contract SkinnyOptimisticOracleInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optimisticOracleLiveness\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingReserves\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposerBondPct\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"}],\"name\":\"relayAndSpeedUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"}],\"name\":\"relayDeposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"relays\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"relaysEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lpTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"sendEth\",\"type\":\"bool\"}],\"name\":\"removeLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"time\",\"type\":\"uint256\"}],\"name\":\"setCurrentTime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"setLpFeeRatePerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_relaysEnabled\",\"type\":\"bool\"}],\"name\":\"setRelaysEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"settleRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"depositId\",\"type\":\"uint64\"},{\"internalType\":\"address payable\",\"name\":\"l1Recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"l2Sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"slowRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"instantRelayFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"quoteTimestamp\",\"type\":\"uint32\"}],\"internalType\":\"struct BridgePool.DepositData\",\"name\":\"depositData\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum BridgePool.RelayState\",\"name\":\"relayState\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"slowRelayer\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"relayId\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"realizedLpFeePct\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"priceRequestTime\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"proposerBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"}],\"internalType\":\"struct BridgePool.RelayData\",\"name\":\"relayData\",\"type\":\"tuple\"}],\"name\":\"speedUpRelay\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"store\",\"outputs\":[{\"internalType\":\"contract StoreInterface\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"syncUmaEcosystemParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"syncWithBridgeAdminParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"timerAddress\",\"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\":[],\"name\":\"undistributedLpFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"utilizedReserves\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addLiquidity(uint256)\":{\"details\":\"The caller must approve this contract to transfer `l1TokenAmount` amount of l1Token if depositing ERC20.The caller can deposit ETH which is auto wrapped to WETH. This can only be done if: a) this is the Weth pool and b) the l1TokenAmount matches to the transaction msg.value.Reentrancy guard not added to this function because this indirectly calls sync() which is guarded.\",\"params\":{\"l1TokenAmount\":\"Number of l1Token to add as liquidity.\"}},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"changeAdmin(address)\":{\"details\":\"Caller must be BridgeAdmin contract.\",\"params\":{\"_newAdmin\":\"Admin address of the new admin.\"}},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"disputeRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"details\":\"The result of this method is to always throw out the relay, providing an opportunity for another relay for the same deposit. Between the disputer and proposer, whoever is incorrect loses their bond. Whoever is correct gets it back + a payout.Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.\",\"params\":{\"depositData\":\"the deposit data struct containing all the user's deposit information.\",\"relayData\":\"RelayData logged in the disputed relay.\"}},\"exchangeRateCurrent()\":{\"returns\":{\"_0\":\"The updated exchange rate between LP tokens and L1 tokens.\"}},\"getCurrentTime()\":{\"returns\":{\"_0\":\"uint for the current Testable timestamp.\"}},\"getLiquidityUtilization(uint256)\":{\"details\":\"Used in computing realizedLpFeePct off-chain.\",\"params\":{\"relayedAmount\":\"Size of the relayed deposit to factor into the utilization calculation.\"},\"returns\":{\"utilizationCurrent\":\"The current utilization ratio.\",\"utilizationPostRelay\":\"The updated utilization ratio accounting for a new `relayedAmount`.\"}},\"getRelayAncillaryData((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"details\":\"Helpful method to test that ancillary data is constructed properly. We should consider removing if we don't anticipate off-chain bots or users to call this method.\",\"params\":{\"depositData\":\"Contains L2 deposit information used by off-chain validators to validate relay.\",\"relayData\":\"Contains relay information used by off-chain validators to validate relay.\"},\"returns\":{\"_0\":\"bytes New ancillary data that can be decoded into UTF8.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"liquidityUtilizationCurrent()\":{\"details\":\"Used in computing realizedLpFeePct off-chain.\",\"returns\":{\"_0\":\"The current utilization ratio.\"}},\"liquidityUtilizationPostRelay(uint256)\":{\"details\":\"Used in computing realizedLpFeePct off-chain.\",\"params\":{\"relayedAmount\":\"Size of the relayed deposit to factor into the utilization calculation.\"},\"returns\":{\"_0\":\"The updated utilization ratio accounting for a new `relayedAmount`.\"}},\"name()\":{\"details\":\"Returns the name of the token.\"},\"relayAndSpeedUp((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)\":{\"details\":\"There can only be one pending relay for a deposit. This method is effectively the relayDeposit and speedUpRelay methods concatenated. This could be refactored to just call each method, but there are some gas savings in combining the transfers and hash computations.Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.This function can only be called if relays are enabled for this bridge pool.\",\"params\":{\"depositData\":\"the deposit data struct containing all the user's deposit information.\",\"realizedLpFeePct\":\"LP fee calculated off-chain considering the L1 pool liquidity at deposit time, before      quoteTimestamp. The OO acts to verify the correctness of this realized fee. Cannot exceed 50%.\"}},\"relayDeposit((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)\":{\"details\":\"There can only be one pending relay for a deposit.Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.This function can only be called if relays are enabled for this bridge pool.\",\"params\":{\"depositData\":\"the deposit data struct containing all the user's deposit information.\",\"realizedLpFeePct\":\"LP fee calculated off-chain considering the L1 pool liquidity at deposit time, before      quoteTimestamp. The OO acts to verify the correctness of this realized fee. Cannot exceed 50%.\"}},\"removeLiquidity(uint256,bool)\":{\"details\":\"The caller does not need to approve the spending of LP tokens as this method directly uses the burn logic.Reentrancy guard not added to this function because this indirectly calls sync() which is guarded.\",\"params\":{\"lpTokenAmount\":\"Number of lpTokens to redeem for underlying.\",\"sendEth\":\"Enable the liquidity provider to remove liquidity in ETH, if this is the WETH pool.\"}},\"setCurrentTime(uint256)\":{\"details\":\"Will revert if not running in test mode.\",\"params\":{\"time\":\"timestamp to set current Testable time to.\"}},\"setLpFeeRatePerSecond(uint64)\":{\"details\":\"Caller must be BridgeAdmin contract.\",\"params\":{\"_newLpFeeRatePerSecond\":\"The new rate to set.\"}},\"setRelaysEnabled(bool)\":{\"details\":\"Caller must be BridgeAdmin contract.\",\"params\":{\"_relaysEnabled\":\"The new relaysEnabled state.\"}},\"settleRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"details\":\"We use the relayData and depositData to compute the ancillary data that the relay price request is uniquely associated with on the OptimisticOracle. If the price request passed in does not match the pending relay price request, then this will revert.\",\"params\":{\"depositData\":\"Unique set of L2 deposit data that caller is trying to settle a relay for.\",\"relayData\":\"Parameters of Relay that caller is attempting to settle. Must hash to the stored relay hash for this deposit.\"}},\"speedUpRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"details\":\"We assume that the caller has performed an off-chain check that the deposit data they are attempting to relay is valid. If the deposit data is invalid, then the instant relayer has no recourse to receive their funds back after the invalid deposit data is disputed. Moreover, no one will be able to resubmit a relay for the invalid deposit data because they know it will get disputed again. On the other hand, if the deposit data is valid, then even if it is falsely disputed, the instant relayer will eventually get reimbursed because someone else will be incentivized to resubmit the relay to earn slow relayer rewards. Once the valid relay is finalized, the instant relayer will be reimbursed. Therefore, the caller has the same responsibility as the disputer in validating the relay data.Caller must have approved this contract to spend the deposit amount of L1 tokens to relay. There can only be one instant relayer per relay attempt. You cannot speed up a relay that is past liveness.\",\"params\":{\"depositData\":\"Unique set of L2 deposit data that caller is trying to instantly relay.\",\"relayData\":\"Parameters of Relay that caller is attempting to speedup. Must hash to the stored relay hash for this deposit or this method will revert.\"}},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"syncUmaEcosystemParams()\":{\"details\":\"There is no risk of leaving this function public for anyone to call as in all cases we want the addresses in this contract to map to the latest version in the Finder and store the latest final fee.\"},\"syncWithBridgeAdminParams()\":{\"details\":\"There is no risk of leaving this function public for anyone to call as in all cases we want these values in this contract to map to the latest version set in the BridgeAdmin.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addLiquidity(uint256)\":{\"notice\":\"Add liquidity to the bridge pool. Pulls l1Token from the caller's wallet. The caller is sent back a commensurate number of LP tokens (minted to their address) at the prevailing exchange rate.\"},\"changeAdmin(address)\":{\"notice\":\"Enable the current bridge admin to transfer admin to to a new address.\"},\"disputeRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"notice\":\"Called by Disputer to dispute an ongoing relay.\"},\"exchangeRateCurrent()\":{\"notice\":\"Computes the exchange rate between LP tokens and L1Tokens. Used when adding/removing liquidity.\"},\"getAccumulatedFees()\":{\"notice\":\"Computes the current amount of unallocated fees that have accumulated from the previous time this the contract was called.\"},\"getCurrentTime()\":{\"notice\":\"Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode. Otherwise, it will return the block timestamp.\"},\"getLiquidityUtilization(uint256)\":{\"notice\":\"Return both the current utilization value and liquidity utilization post the relay.\"},\"getRelayAncillaryData((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"notice\":\"Returns ancillary data containing all relevant Relay data that voters can format into UTF8 and use to determine if the relay is valid.\"},\"liquidityUtilizationCurrent()\":{\"notice\":\"Computes the current liquidity utilization ratio.\"},\"liquidityUtilizationPostRelay(uint256)\":{\"notice\":\"Computes the liquidity utilization ratio post a relay of known size.\"},\"relayAndSpeedUp((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)\":{\"notice\":\"Called by Relayer to execute a slow + fast relay from L2 to L1, fulfilling a corresponding deposit order.\"},\"relayDeposit((uint256,uint64,address,address,uint256,uint64,uint64,uint32),uint64)\":{\"notice\":\"Called by Relayer to execute a slow relay from L2 to L1, fulfilling a corresponding deposit order.\"},\"removeLiquidity(uint256,bool)\":{\"notice\":\"Removes liquidity from the bridge pool. Burns lpTokenAmount LP tokens from the caller's wallet. The caller is sent back a commensurate number of l1Tokens at the prevailing exchange rate.\"},\"setCurrentTime(uint256)\":{\"notice\":\"Sets the current time.\"},\"setLpFeeRatePerSecond(uint64)\":{\"notice\":\"Enable the bridge admin to change the decay rate at which LP shares accumulate fees. The higher this value, the faster LP shares realize pending fees.\"},\"setRelaysEnabled(bool)\":{\"notice\":\"Enable the bridge admin to enable/disable relays for this pool. Acts as a pause. Only effects relayDeposit and relayAndSpeedUp methods. ALl other contract logic remains functional after a pause.\"},\"settleRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"notice\":\"Reward relayers if a pending relay price request has a price available on the OptimisticOracle. Mark the relay as complete.\"},\"speedUpRelay((uint256,uint64,address,address,uint256,uint64,uint64,uint32),(uint8,address,uint32,uint64,uint32,uint256,uint256))\":{\"notice\":\"Instantly relay a deposit amount minus fees to the l1Recipient. Instant relayer earns a reward following the pending relay challenge period.\"},\"sync()\":{\"notice\":\"Synchronize any balance changes in this contract with the utilized & liquid reserves. This would be done at the conclusion of an L2 -> L1 token transfer via the canonical token bridge.\"},\"syncUmaEcosystemParams()\":{\"notice\":\"Updates the address stored in this contract for the OptimisticOracle and the Store to the latest versions set in the the Finder. Also pull finalFee Store these as local variables to make relay methods gas efficient.\"},\"syncWithBridgeAdminParams()\":{\"notice\":\"Updates the values of stored constants for the proposerBondPct, optimisticOracleLiveness and identifier to that set in the bridge Admin. We store these as local variables to make the relay methods more gas efficient.\"}},\"notice\":\"This is the BridgePool contract that should be deployed on live networks. It is exactly the same as the regular BridgePool contract, but it overrides getCurrentTime to make the call a simply return block.timestamp with no branching or storage queries. This is done to save gas.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/BridgePool.sol\":\"BridgePoolProd\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xfeccdcbf67b2006a715e5af1a4c7556004d95b2806552b5cc54e46e8eb7e887b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45b1f9043c0fb450272f20ed19ef633fcba1b129d602651a856dfae1a2243a2c\",\"dweb:/ipfs/QmUTSQiDikkcNtTtyDpkEwCM5ztVUUh9c1inBukn6HC5Vr\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b31b80dd57f8c28320b01fa4f3ed98ac1aa678f61846c1db2771c996b77a9451\",\"dweb:/ipfs/QmcT2Di5L9t82A9XdYDZ4tWMEPGFVFazKDwC2Vrd135AA3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a4c96fafff76deda5697c3c5c98cade6e6e1b178254544c106bf360c079ce4e\",\"dweb:/ipfs/QmXmxubE3jnatFgZuN8ay1VV6hZ8WRmhvUjNpeVjki15HX\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc2bfdea0d2562c76fb3c4cf70a86c6ba25c5a30e8f8515c95aafdf8383f8395\",\"dweb:/ipfs/QmTbFya18786ckJfLYUoWau9jBTKfmWnWm5XSViWvB7PXN\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f9529d3d365e8415155cee11394e0f7c0de2152b601b7e77508fce16cb4a509\",\"dweb:/ipfs/QmVhbcLVsAzvqfjsdLwy25XMjgVJm7Z3w2JCNiNbZF2GHT\"]},\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://873363c817ef68913ced271e77fc4af21d4a94ffba23de2b205c6e9de8ff6b72\",\"dweb:/ipfs/QmNmN46R3rrvTxMUjDTbZiCiqqTX9TRvWbiaN9qLrWQXPS\"]},\"contracts/common/implementation/AncillaryData.sol\":{\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0bbaed49756e8cf7ef405e132f441cd7a735ac6186a200b0179147e7d137b74a\",\"dweb:/ipfs/QmeSBJX5a61LZPxbkUKS2NF4LSxemgDwjD65fCAmyP7PX2\"]},\"contracts/common/implementation/FixedPoint.sol\":{\"keccak256\":\"0x996b97cc4fa5da4064e3aee500edc6972485d59a9334ceec81155e2c2f484dae\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d7c028926dc2b27e7dc103363dca8a43f60b3351f4a14bcb702660f95c68663\",\"dweb:/ipfs/QmXz4ieFjP5RxJ35F8GbPryYEGvFmxc4Gqx8EK7N57ixzT\"]},\"contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://aef5cb31ab23e1e6baad76130c29aff1ee3fcda3c4ffc80e0a5294341a253934\",\"dweb:/ipfs/QmNyso4UszNxE6un3Cqc3R7KiBmZzdWNULvjBDfnLRAmwc\"]},\"contracts/common/implementation/MultiCaller.sol\":{\"keccak256\":\"0x31f18055b14fd9eeb459c6d6a88d1a60921bf3755031f6db4b709c3e01d078f7\",\"urls\":[\"bzz-raw://1a002084305bc747b23e69e24cfd1f3aa730adc22dd76d1e077dc72bcffc41f0\",\"dweb:/ipfs/Qmb611uGKzhc2MHkMhqW3NG49FY3Tg1udh7zXttmPtfU2s\"]},\"contracts/common/implementation/Testable.sol\":{\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://537d694e3753596f507d071f283be9caeaad0010c444c9c9955d729affeb4907\",\"dweb:/ipfs/QmZ1WfVTBao11QaN6aygMhnt45UjRq77ZwfKPFmHiVSdaJ\"]},\"contracts/common/implementation/Timer.sol\":{\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://7ddac8d3cb76f8811156a11a7702d7c05b15a0f18c22b5abdc318723193f9266\",\"dweb:/ipfs/QmPxL7AU8NkURJaZ6WxXNcw88wGMSoPX4jbt7SMdPJqtYv\"]},\"contracts/insured-bridge/BridgePool.sol\":{\"keccak256\":\"0x9c5c7c3b718c6bfa3acd1a200728505f925f089373e8745ceb43cd5ac561dc29\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0ad13a7138b556cbadb7afb140d56b057a1a8afff34de50c2cb1d898c886fef2\",\"dweb:/ipfs/QmVCZFJGismpapK5wXGifBb4yu9cma45he61NzEgecJ2cW\"]},\"contracts/insured-bridge/interfaces/BridgeAdminInterface.sol\":{\"keccak256\":\"0x1fb2737503a627f20fd42538bb0ed3b4c8bd3905ad19906b5d6e2f1ff3d8336f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e3643f87c9029fe02b38f0b00a0ec459da10e47fa8b58d5e7bcd548d52dfee41\",\"dweb:/ipfs/QmXfJpxmhzCG6KEYg8nhUfoHcHN2d9v3JtSm2CstLMusow\"]},\"contracts/insured-bridge/interfaces/BridgePoolInterface.sol\":{\"keccak256\":\"0xecfb4d11dca8a0a07c73e7104426a86e96c35e905fc436405adcd1eec8be383f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://51ea861b6323883911c7e05055e2674eb9764c6eb4310b4b71bef6bf1af48ffd\",\"dweb:/ipfs/QmNZ1UWJKefn1m3XBr1g5ZVHLP9qGu8x7QpRKFCPt34b5N\"]},\"contracts/oracle/implementation/Constants.sol\":{\"keccak256\":\"0xdb839b42f7348bdd64e2ab1bfbcca64dac758313192024abb815936a9f2eca1a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9acf048e365270ef3b8f08ca06cdeb0a2f38a1c8313bd166a0fe5d50df495133\",\"dweb:/ipfs/QmcHEui3yYE9aYkJe2wmm5Wi42gG6ekU2VZDV9qFpWyRkV\"]},\"contracts/oracle/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]},\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":{\"keccak256\":\"0x92e7280c1abd5f0c4fcd20247fc1b8428aaf4eeea59439c074d15fdaf9c64989\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d12bbcf0a91cef63c4767bffd047254599c5a1fce38e5e81d3005e102fdeef8\",\"dweb:/ipfs/QmTkd3AG9gdvBZq3HKCUW8eErvkguM2QqE3nUDGfvye3Yi\"]},\"contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol\":{\"keccak256\":\"0x91d21e44a97b719106e8f97b99399a3d8dc3697badd01df06518892f38fe033f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://68c350c822b256b43543ac4dd3dd1413ed95f25a9415d5dba4c562cd11d55716\",\"dweb:/ipfs/QmZyYeBnM59oPmWcK1KERNayg7xuHv12sLzzmqC42Lq76a\"]},\"contracts/oracle/interfaces/StoreInterface.sol\":{\"keccak256\":\"0xbb73671684309c91ad5ef3da1474051d03f2e7d5882bed7f5c4317e5d4c768df\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://32386544d3119fd0187a8c4e8b01c739f508ab863faa04345cabc2544081f9e8\",\"dweb:/ipfs/QmYszDURs1x75rsejZkGt9zCkASXnJtufbNsL3XHe2eJPQ\"]}},\"version\":1}"
                },
                "WETH9Like": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "deposit",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "wad",
                                    "type": "uint256"
                                }
                            ],
                            "name": "withdraw",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "deposit()": "d0e30db0",
                            "withdraw(uint256)": "2e1a7d4d"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/BridgePool.sol\":\"WETH9Like\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xfeccdcbf67b2006a715e5af1a4c7556004d95b2806552b5cc54e46e8eb7e887b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45b1f9043c0fb450272f20ed19ef633fcba1b129d602651a856dfae1a2243a2c\",\"dweb:/ipfs/QmUTSQiDikkcNtTtyDpkEwCM5ztVUUh9c1inBukn6HC5Vr\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x99f5c21018d796db7833a2100bb0e7411999e248a3c950fb526eee5d2bf47cb7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b31b80dd57f8c28320b01fa4f3ed98ac1aa678f61846c1db2771c996b77a9451\",\"dweb:/ipfs/QmcT2Di5L9t82A9XdYDZ4tWMEPGFVFazKDwC2Vrd135AA3\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x069b2631bb5b5193a58ccf7a06266c7361bd2c20095667af4402817605627f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a4c96fafff76deda5697c3c5c98cade6e6e1b178254544c106bf360c079ce4e\",\"dweb:/ipfs/QmXmxubE3jnatFgZuN8ay1VV6hZ8WRmhvUjNpeVjki15HX\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xf930d2df426bfcfc1f7415be724f04081c96f4fb9ec8d0e3a521c07692dface0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc2bfdea0d2562c76fb3c4cf70a86c6ba25c5a30e8f8515c95aafdf8383f8395\",\"dweb:/ipfs/QmTbFya18786ckJfLYUoWau9jBTKfmWnWm5XSViWvB7PXN\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f9529d3d365e8415155cee11394e0f7c0de2152b601b7e77508fce16cb4a509\",\"dweb:/ipfs/QmVhbcLVsAzvqfjsdLwy25XMjgVJm7Z3w2JCNiNbZF2GHT\"]},\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://873363c817ef68913ced271e77fc4af21d4a94ffba23de2b205c6e9de8ff6b72\",\"dweb:/ipfs/QmNmN46R3rrvTxMUjDTbZiCiqqTX9TRvWbiaN9qLrWQXPS\"]},\"contracts/common/implementation/AncillaryData.sol\":{\"keccak256\":\"0x8ff33ac32d3e6de25de9e0ac2c0ff9a621f187fa97e9ee84092b327471baa3ce\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0bbaed49756e8cf7ef405e132f441cd7a735ac6186a200b0179147e7d137b74a\",\"dweb:/ipfs/QmeSBJX5a61LZPxbkUKS2NF4LSxemgDwjD65fCAmyP7PX2\"]},\"contracts/common/implementation/FixedPoint.sol\":{\"keccak256\":\"0x996b97cc4fa5da4064e3aee500edc6972485d59a9334ceec81155e2c2f484dae\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d7c028926dc2b27e7dc103363dca8a43f60b3351f4a14bcb702660f95c68663\",\"dweb:/ipfs/QmXz4ieFjP5RxJ35F8GbPryYEGvFmxc4Gqx8EK7N57ixzT\"]},\"contracts/common/implementation/Lockable.sol\":{\"keccak256\":\"0xcd34b3f83b61a096b53020749f327096d5cacd89c2393d947595afb934496ad4\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://aef5cb31ab23e1e6baad76130c29aff1ee3fcda3c4ffc80e0a5294341a253934\",\"dweb:/ipfs/QmNyso4UszNxE6un3Cqc3R7KiBmZzdWNULvjBDfnLRAmwc\"]},\"contracts/common/implementation/MultiCaller.sol\":{\"keccak256\":\"0x31f18055b14fd9eeb459c6d6a88d1a60921bf3755031f6db4b709c3e01d078f7\",\"urls\":[\"bzz-raw://1a002084305bc747b23e69e24cfd1f3aa730adc22dd76d1e077dc72bcffc41f0\",\"dweb:/ipfs/Qmb611uGKzhc2MHkMhqW3NG49FY3Tg1udh7zXttmPtfU2s\"]},\"contracts/common/implementation/Testable.sol\":{\"keccak256\":\"0x0254b45747293bb800373a58d123969adec0428f7be79dc941cab10fcad09918\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://537d694e3753596f507d071f283be9caeaad0010c444c9c9955d729affeb4907\",\"dweb:/ipfs/QmZ1WfVTBao11QaN6aygMhnt45UjRq77ZwfKPFmHiVSdaJ\"]},\"contracts/common/implementation/Timer.sol\":{\"keccak256\":\"0x9e0dd7389718bd5d1da910273a6f4cee98ee22bfc0c92bde0f0955c0e23adb5e\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://7ddac8d3cb76f8811156a11a7702d7c05b15a0f18c22b5abdc318723193f9266\",\"dweb:/ipfs/QmPxL7AU8NkURJaZ6WxXNcw88wGMSoPX4jbt7SMdPJqtYv\"]},\"contracts/insured-bridge/BridgePool.sol\":{\"keccak256\":\"0x9c5c7c3b718c6bfa3acd1a200728505f925f089373e8745ceb43cd5ac561dc29\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0ad13a7138b556cbadb7afb140d56b057a1a8afff34de50c2cb1d898c886fef2\",\"dweb:/ipfs/QmVCZFJGismpapK5wXGifBb4yu9cma45he61NzEgecJ2cW\"]},\"contracts/insured-bridge/interfaces/BridgeAdminInterface.sol\":{\"keccak256\":\"0x1fb2737503a627f20fd42538bb0ed3b4c8bd3905ad19906b5d6e2f1ff3d8336f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e3643f87c9029fe02b38f0b00a0ec459da10e47fa8b58d5e7bcd548d52dfee41\",\"dweb:/ipfs/QmXfJpxmhzCG6KEYg8nhUfoHcHN2d9v3JtSm2CstLMusow\"]},\"contracts/insured-bridge/interfaces/BridgePoolInterface.sol\":{\"keccak256\":\"0xecfb4d11dca8a0a07c73e7104426a86e96c35e905fc436405adcd1eec8be383f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://51ea861b6323883911c7e05055e2674eb9764c6eb4310b4b71bef6bf1af48ffd\",\"dweb:/ipfs/QmNZ1UWJKefn1m3XBr1g5ZVHLP9qGu8x7QpRKFCPt34b5N\"]},\"contracts/oracle/implementation/Constants.sol\":{\"keccak256\":\"0xdb839b42f7348bdd64e2ab1bfbcca64dac758313192024abb815936a9f2eca1a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9acf048e365270ef3b8f08ca06cdeb0a2f38a1c8313bd166a0fe5d50df495133\",\"dweb:/ipfs/QmcHEui3yYE9aYkJe2wmm5Wi42gG6ekU2VZDV9qFpWyRkV\"]},\"contracts/oracle/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]},\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":{\"keccak256\":\"0x92e7280c1abd5f0c4fcd20247fc1b8428aaf4eeea59439c074d15fdaf9c64989\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d12bbcf0a91cef63c4767bffd047254599c5a1fce38e5e81d3005e102fdeef8\",\"dweb:/ipfs/QmTkd3AG9gdvBZq3HKCUW8eErvkguM2QqE3nUDGfvye3Yi\"]},\"contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol\":{\"keccak256\":\"0x91d21e44a97b719106e8f97b99399a3d8dc3697badd01df06518892f38fe033f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://68c350c822b256b43543ac4dd3dd1413ed95f25a9415d5dba4c562cd11d55716\",\"dweb:/ipfs/QmZyYeBnM59oPmWcK1KERNayg7xuHv12sLzzmqC42Lq76a\"]},\"contracts/oracle/interfaces/StoreInterface.sol\":{\"keccak256\":\"0xbb73671684309c91ad5ef3da1474051d03f2e7d5882bed7f5c4317e5d4c768df\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://32386544d3119fd0187a8c4e8b01c739f508ab863faa04345cabc2544081f9e8\",\"dweb:/ipfs/QmYszDURs1x75rsejZkGt9zCkASXnJtufbNsL3XHe2eJPQ\"]}},\"version\":1}"
                }
            },
            "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol": {
                "BridgeAdminInterface": {
                    "abi": [
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "address[]",
                                    "name": "bridgePools",
                                    "type": "address[]"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "BridgePoolsAdminTransferred",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "bool",
                                    "name": "depositsEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "DepositsEnabled",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "SetCrossDomainAdmin",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2DepositContract",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2MessengerContract",
                                    "type": "address"
                                }
                            ],
                            "name": "SetDepositContracts",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetLpFeeRate",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": false,
                                    "internalType": "uint64",
                                    "name": "newMinimumBridgingDelay",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetMinimumBridgingDelay",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint32",
                                    "name": "liveness",
                                    "type": "uint32"
                                }
                            ],
                            "name": "SetOptimisticOracleLiveness",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "uint64",
                                    "name": "proposerBondPct",
                                    "type": "uint64"
                                }
                            ],
                            "name": "SetProposerBondPct",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": true,
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "SetRelayIdentifier",
                            "type": "event"
                        },
                        {
                            "anonymous": false,
                            "inputs": [
                                {
                                    "indexed": false,
                                    "internalType": "uint256",
                                    "name": "chainId",
                                    "type": "uint256"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l1Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "indexed": true,
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "name": "WhitelistToken",
                            "type": "event"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "name": "depositContracts",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "depositContract",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "messengerContract",
                                            "type": "address"
                                        }
                                    ],
                                    "internalType": "struct BridgeAdminInterface.DepositUtilityContracts",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "finder",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "identifier",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "optimisticOracleLiveness",
                            "outputs": [
                                {
                                    "internalType": "uint32",
                                    "name": "",
                                    "type": "uint32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "proposerBondPct",
                            "outputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "",
                                    "type": "uint64"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "name": "whitelistedTokens",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "l2Token",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "bridgePool",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "depositContracts(uint256)": "7eb4fa73",
                            "finder()": "b9a3c84c",
                            "identifier()": "7998a1c4",
                            "optimisticOracleLiveness()": "173684c5",
                            "proposerBondPct()": "c73a32c3",
                            "whitelistedTokens(address,uint256)": "bf06c19a"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"bridgePools\",\"type\":\"address[]\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"BridgePoolsAdminTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"depositsEnabled\",\"type\":\"bool\"}],\"name\":\"DepositsEnabled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"SetCrossDomainAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2DepositContract\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2MessengerContract\",\"type\":\"address\"}],\"name\":\"SetDepositContracts\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"SetLpFeeRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"newMinimumBridgingDelay\",\"type\":\"uint64\"}],\"name\":\"SetMinimumBridgingDelay\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"liveness\",\"type\":\"uint32\"}],\"name\":\"SetOptimisticOracleLiveness\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"proposerBondPct\",\"type\":\"uint64\"}],\"name\":\"SetProposerBondPct\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"}],\"name\":\"SetRelayIdentifier\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l1Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"name\":\"WhitelistToken\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositContracts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"depositContract\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"messengerContract\",\"type\":\"address\"}],\"internalType\":\"struct BridgeAdminInterface.DepositUtilityContracts\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"finder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identifier\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"optimisticOracleLiveness\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proposerBondPct\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistedTokens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"l2Token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bridgePool\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Helper view methods designed to be called by BridgePool contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/interfaces/BridgeAdminInterface.sol\":\"BridgeAdminInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/insured-bridge/interfaces/BridgeAdminInterface.sol\":{\"keccak256\":\"0x1fb2737503a627f20fd42538bb0ed3b4c8bd3905ad19906b5d6e2f1ff3d8336f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e3643f87c9029fe02b38f0b00a0ec459da10e47fa8b58d5e7bcd548d52dfee41\",\"dweb:/ipfs/QmXfJpxmhzCG6KEYg8nhUfoHcHN2d9v3JtSm2CstLMusow\"]}},\"version\":1}"
                }
            },
            "contracts/insured-bridge/interfaces/BridgePoolInterface.sol": {
                "BridgePoolInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "newAdmin",
                                    "type": "address"
                                }
                            ],
                            "name": "changeAdmin",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "l1Token",
                            "outputs": [
                                {
                                    "internalType": "contract IERC20",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint64",
                                    "name": "_newLpFeeRatePerSecond",
                                    "type": "uint64"
                                }
                            ],
                            "name": "setLpFeeRatePerSecond",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bool",
                                    "name": "_relaysEnabled",
                                    "type": "bool"
                                }
                            ],
                            "name": "setRelaysEnabled",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "changeAdmin(address)": "8f283970",
                            "l1Token()": "c01e1bd6",
                            "setLpFeeRatePerSecond(uint64)": "27f224ca",
                            "setRelaysEnabled(bool)": "08ed5b14"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"changeAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1Token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_newLpFeeRatePerSecond\",\"type\":\"uint64\"}],\"name\":\"setLpFeeRatePerSecond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_relaysEnabled\",\"type\":\"bool\"}],\"name\":\"setRelaysEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/insured-bridge/interfaces/BridgePoolInterface.sol\":\"BridgePoolInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"contracts/insured-bridge/interfaces/BridgePoolInterface.sol\":{\"keccak256\":\"0xecfb4d11dca8a0a07c73e7104426a86e96c35e905fc436405adcd1eec8be383f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://51ea861b6323883911c7e05055e2674eb9764c6eb4310b4b71bef6bf1af48ffd\",\"dweb:/ipfs/QmNZ1UWJKefn1m3XBr1g5ZVHLP9qGu8x7QpRKFCPt34b5N\"]}},\"version\":1}"
                }
            },
            "contracts/oracle/implementation/Constants.sol": {
                "OptimisticOracleConstraints": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "ancillaryBytesLimit",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "6088610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063c371dda7146038575b600080fd5b604061200081565b60405190815260200160405180910390f3fea26469706673582212203d59916f544fbadfb9d3ce4a62d0cdf17a1afc0939cea98524fdb86d34c52f4a64736f6c63430008090033",
                            "opcodes": "PUSH1 0x88 PUSH2 0x38 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC371DDA7 EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 PUSH2 0x2000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE MSIZE SWAP2 PUSH16 0x544FBADFB9D3CE4A62D0CDF17A1AFC09 CODECOPY 0xCE 0xA9 DUP6 0x24 REVERT 0xB8 PUSH14 0x34C52F4A64736F6C634300080900 CALLER ",
                            "sourceMap": "920:531:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;920:531:17;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@ancillaryBytesLimit_6172": {
                                    "entryPoint": null,
                                    "id": 6172,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:201:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "123:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "133:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "145:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "156:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "141:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "141:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "175:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "186:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "168:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "168:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "168:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "92:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "103:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "114:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:185:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063c371dda7146038575b600080fd5b604061200081565b60405190815260200160405180910390f3fea26469706673582212203d59916f544fbadfb9d3ce4a62d0cdf17a1afc0939cea98524fdb86d34c52f4a64736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x33 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC371DDA7 EQ PUSH1 0x38 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 PUSH2 0x2000 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 RETURNDATASIZE MSIZE SWAP2 PUSH16 0x544FBADFB9D3CE4A62D0CDF17A1AFC09 CODECOPY 0xCE 0xA9 DUP6 0x24 REVERT 0xB8 PUSH14 0x34C52F4A64736F6C634300080900 CALLER ",
                            "sourceMap": "920:531:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;1398:50;;1444:4;1398:50;;;;;168:25:22;;;156:2;141:18;1398:50:17;;;;;;"
                        },
                        "methodIdentifiers": {
                            "ancillaryBytesLimit()": "c371dda7"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Commonly re-used values for contracts associated with the OptimisticOracle.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/implementation/Constants.sol\":\"OptimisticOracleConstraints\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/oracle/implementation/Constants.sol\":{\"keccak256\":\"0xdb839b42f7348bdd64e2ab1bfbcca64dac758313192024abb815936a9f2eca1a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9acf048e365270ef3b8f08ca06cdeb0a2f38a1c8313bd166a0fe5d50df495133\",\"dweb:/ipfs/QmcHEui3yYE9aYkJe2wmm5Wi42gG6ekU2VZDV9qFpWyRkV\"]}},\"version\":1}"
                },
                "OracleInterfaces": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "Bridge",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "CollateralWhitelist",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "FinancialContractsAdmin",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "GenericHandler",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "IdentifierWhitelist",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "OptimisticOracle",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "Oracle",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "Registry",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "SkinnyOptimisticOracle",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "Store",
                            "outputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "",
                                    "type": "bytes32"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "6101e961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a85760003560e01c80634f4a180b116100705780634f4a180b14610147578063598dd097146101645780635fa2ef10146101815780637db9743b14610191578063f24a534e146101a357600080fd5b8063079b6c63146100ad5780631a4dbd1c146100d75780632a71e5b3146100f157806342e90c33146101185780634596ac9b14610127575b600080fd5b6100c56d23b2b732b934b1a430b7323632b960911b81565b60405190815260200160405180910390f35b6100c56f4f7074696d69737469634f7261636c6560801b81565b6100c57f46696e616e6369616c436f6e74726163747341646d696e00000000000000000081565b6100c56453746f726560d81b81565b6100c575536b696e6e794f7074696d69737469634f7261636c6560501b81565b6100c5721259195b9d1a599a595c95da1a5d195b1a5cdd606a1b81565b6100c57210dbdb1b185d195c985b15da1a5d195b1a5cdd606a1b81565b6100c56542726964676560d01b81565b6100c567526567697374727960c01b81565b6100c5654f7261636c6560d01b8156fea2646970667358221220b9922dec44eb6cd606ef761f1d0cec01bad4306826d8974580a8919cd911c64264736f6c63430008090033",
                            "opcodes": "PUSH2 0x1E9 PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F4A180B GT PUSH2 0x70 JUMPI DUP1 PUSH4 0x4F4A180B EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x598DD097 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x5FA2EF10 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x7DB9743B EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0xF24A534E EQ PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79B6C63 EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x1A4DBD1C EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2A71E5B3 EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x42E90C33 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4596AC9B EQ PUSH2 0x127 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC5 PUSH14 0x23B2B732B934B1A430B7323632B9 PUSH1 0x91 SHL DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH16 0x4F7074696D69737469634F7261636C65 PUSH1 0x80 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH32 0x46696E616E6369616C436F6E74726163747341646D696E000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH5 0x53746F7265 PUSH1 0xD8 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH22 0x536B696E6E794F7074696D69737469634F7261636C65 PUSH1 0x50 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH19 0x1259195B9D1A599A595C95DA1A5D195B1A5CDD PUSH1 0x6A SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH19 0x10DBDB1B185D195C985B15DA1A5D195B1A5CDD PUSH1 0x6A SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH6 0x427269646765 PUSH1 0xD0 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH8 0x5265676973747279 PUSH1 0xC0 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH6 0x4F7261636C65 PUSH1 0xD0 SHL DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 SWAP3 0x2D 0xEC DIFFICULTY 0xEB PUSH13 0xD606EF761F1D0CEC01BAD43068 0x26 0xD8 SWAP8 GASLIMIT DUP1 0xA8 SWAP2 SWAP13 0xD9 GT 0xC6 TIMESTAMP PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "170:654:17:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;170:654:17;;;;;;;;;;;;;;;;;"
                        },
                        "deployedBytecode": {
                            "functionDebugData": {
                                "@Bridge_6161": {
                                    "entryPoint": null,
                                    "id": 6161,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@CollateralWhitelist_6155": {
                                    "entryPoint": null,
                                    "id": 6155,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@FinancialContractsAdmin_6149": {
                                    "entryPoint": null,
                                    "id": 6149,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@GenericHandler_6164": {
                                    "entryPoint": null,
                                    "id": 6164,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@IdentifierWhitelist_6143": {
                                    "entryPoint": null,
                                    "id": 6143,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@OptimisticOracle_6158": {
                                    "entryPoint": null,
                                    "id": 6158,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@Oracle_6140": {
                                    "entryPoint": null,
                                    "id": 6140,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@Registry_6152": {
                                    "entryPoint": null,
                                    "id": 6152,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@SkinnyOptimisticOracle_6167": {
                                    "entryPoint": null,
                                    "id": 6167,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "@Store_6146": {
                                    "entryPoint": null,
                                    "id": 6146,
                                    "parameterSlots": 0,
                                    "returnSlots": 0
                                },
                                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed": {
                                    "entryPoint": null,
                                    "id": null,
                                    "parameterSlots": 2,
                                    "returnSlots": 1
                                }
                            },
                            "generatedSources": [
                                {
                                    "ast": {
                                        "nodeType": "YulBlock",
                                        "src": "0:201:22",
                                        "statements": [
                                            {
                                                "nodeType": "YulBlock",
                                                "src": "6:3:22",
                                                "statements": []
                                            },
                                            {
                                                "body": {
                                                    "nodeType": "YulBlock",
                                                    "src": "123:76:22",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "133:26:22",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "145:9:22"
                                                                    },
                                                                    {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "156:2:22",
                                                                        "type": "",
                                                                        "value": "32"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "141:3:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "141:18:22"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "tail",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "133:4:22"
                                                                }
                                                            ]
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "headStart",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "175:9:22"
                                                                    },
                                                                    {
                                                                        "name": "value0",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "186:6:22"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "mstore",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "168:6:22"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "168:25:22"
                                                            },
                                                            "nodeType": "YulExpressionStatement",
                                                            "src": "168:25:22"
                                                        }
                                                    ]
                                                },
                                                "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed",
                                                "nodeType": "YulFunctionDefinition",
                                                "parameters": [
                                                    {
                                                        "name": "headStart",
                                                        "nodeType": "YulTypedName",
                                                        "src": "92:9:22",
                                                        "type": ""
                                                    },
                                                    {
                                                        "name": "value0",
                                                        "nodeType": "YulTypedName",
                                                        "src": "103:6:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "returnVariables": [
                                                    {
                                                        "name": "tail",
                                                        "nodeType": "YulTypedName",
                                                        "src": "114:4:22",
                                                        "type": ""
                                                    }
                                                ],
                                                "src": "14:185:22"
                                            }
                                        ]
                                    },
                                    "contents": "{\n    { }\n    function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_library_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n}",
                                    "id": 22,
                                    "language": "Yul",
                                    "name": "#utility.yul"
                                }
                            ],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "73000000000000000000000000000000000000000030146080604052600436106100a85760003560e01c80634f4a180b116100705780634f4a180b14610147578063598dd097146101645780635fa2ef10146101815780637db9743b14610191578063f24a534e146101a357600080fd5b8063079b6c63146100ad5780631a4dbd1c146100d75780632a71e5b3146100f157806342e90c33146101185780634596ac9b14610127575b600080fd5b6100c56d23b2b732b934b1a430b7323632b960911b81565b60405190815260200160405180910390f35b6100c56f4f7074696d69737469634f7261636c6560801b81565b6100c57f46696e616e6369616c436f6e74726163747341646d696e00000000000000000081565b6100c56453746f726560d81b81565b6100c575536b696e6e794f7074696d69737469634f7261636c6560501b81565b6100c5721259195b9d1a599a595c95da1a5d195b1a5cdd606a1b81565b6100c57210dbdb1b185d195c985b15da1a5d195b1a5cdd606a1b81565b6100c56542726964676560d01b81565b6100c567526567697374727960c01b81565b6100c5654f7261636c6560d01b8156fea2646970667358221220b9922dec44eb6cd606ef761f1d0cec01bad4306826d8974580a8919cd911c64264736f6c63430008090033",
                            "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F4A180B GT PUSH2 0x70 JUMPI DUP1 PUSH4 0x4F4A180B EQ PUSH2 0x147 JUMPI DUP1 PUSH4 0x598DD097 EQ PUSH2 0x164 JUMPI DUP1 PUSH4 0x5FA2EF10 EQ PUSH2 0x181 JUMPI DUP1 PUSH4 0x7DB9743B EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0xF24A534E EQ PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x79B6C63 EQ PUSH2 0xAD JUMPI DUP1 PUSH4 0x1A4DBD1C EQ PUSH2 0xD7 JUMPI DUP1 PUSH4 0x2A71E5B3 EQ PUSH2 0xF1 JUMPI DUP1 PUSH4 0x42E90C33 EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x4596AC9B EQ PUSH2 0x127 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC5 PUSH14 0x23B2B732B934B1A430B7323632B9 PUSH1 0x91 SHL DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH16 0x4F7074696D69737469634F7261636C65 PUSH1 0x80 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH32 0x46696E616E6369616C436F6E74726163747341646D696E000000000000000000 DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH5 0x53746F7265 PUSH1 0xD8 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH22 0x536B696E6E794F7074696D69737469634F7261636C65 PUSH1 0x50 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH19 0x1259195B9D1A599A595C95DA1A5D195B1A5CDD PUSH1 0x6A SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH19 0x10DBDB1B185D195C985B15DA1A5D195B1A5CDD PUSH1 0x6A SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH6 0x427269646765 PUSH1 0xD0 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH8 0x5265676973747279 PUSH1 0xC0 SHL DUP2 JUMP JUMPDEST PUSH2 0xC5 PUSH6 0x4F7261636C65 PUSH1 0xD0 SHL DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB9 SWAP3 0x2D 0xEC DIFFICULTY 0xEB PUSH13 0xD606EF761F1D0CEC01BAD43068 0x26 0xD8 SWAP8 GASLIMIT DUP1 0xA8 SWAP2 SWAP13 0xD9 GT 0xC6 TIMESTAMP PUSH5 0x736F6C6343 STOP ADDMOD MULMOD STOP CALLER ",
                            "sourceMap": "170:654:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;685:57;;-1:-1:-1;;;685:57:17;;;;;168:25:22;;;156:2;141:18;685:57:17;;;;;;;571:61;;-1:-1:-1;;;571:61:17;;366:75;;;;;321:39;;-1:-1:-1;;;321:39:17;;748:73;;-1:-1:-1;;;748:73:17;;248:67;;-1:-1:-1;;;248:67:17;;498;;-1:-1:-1;;;498:67:17;;638:41;;-1:-1:-1;;;638:41:17;;447:45;;-1:-1:-1;;;447:45:17;;201:41;;-1:-1:-1;;;201:41:17;"
                        },
                        "methodIdentifiers": {
                            "Bridge()": "5fa2ef10",
                            "CollateralWhitelist()": "598dd097",
                            "FinancialContractsAdmin()": "2a71e5b3",
                            "GenericHandler()": "079b6c63",
                            "IdentifierWhitelist()": "4f4a180b",
                            "OptimisticOracle()": "1a4dbd1c",
                            "Oracle()": "f24a534e",
                            "Registry()": "7db9743b",
                            "SkinnyOptimisticOracle()": "4596ac9b",
                            "Store()": "42e90c33"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"Bridge\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CollateralWhitelist\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FinancialContractsAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GenericHandler\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IdentifierWhitelist\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OptimisticOracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Oracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Registry\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SkinnyOptimisticOracle\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"Store\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Stores common interface names used throughout the DVM by registration in the Finder.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/implementation/Constants.sol\":\"OracleInterfaces\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/oracle/implementation/Constants.sol\":{\"keccak256\":\"0xdb839b42f7348bdd64e2ab1bfbcca64dac758313192024abb815936a9f2eca1a\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://9acf048e365270ef3b8f08ca06cdeb0a2f38a1c8313bd166a0fe5d50df495133\",\"dweb:/ipfs/QmcHEui3yYE9aYkJe2wmm5Wi42gG6ekU2VZDV9qFpWyRkV\"]}},\"version\":1}"
                }
            },
            "contracts/oracle/interfaces/FinderInterface.sol": {
                "FinderInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "interfaceName",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "address",
                                    "name": "implementationAddress",
                                    "type": "address"
                                }
                            ],
                            "name": "changeImplementationAddress",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "interfaceName",
                                    "type": "bytes32"
                                }
                            ],
                            "name": "getImplementationAddress",
                            "outputs": [
                                {
                                    "internalType": "address",
                                    "name": "",
                                    "type": "address"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "changeImplementationAddress(bytes32,address)": "31f9665e",
                            "getImplementationAddress(bytes32)": "aafd5e40"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"interfaceName\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"implementationAddress\",\"type\":\"address\"}],\"name\":\"changeImplementationAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"interfaceName\",\"type\":\"bytes32\"}],\"name\":\"getImplementationAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Examples are the Oracle or Store interfaces.\",\"kind\":\"dev\",\"methods\":{\"changeImplementationAddress(bytes32,address)\":{\"params\":{\"implementationAddress\":\"address of the deployed contract that implements the interface.\",\"interfaceName\":\"bytes32 encoding of the interface name that is either changed or registered.\"}},\"getImplementationAddress(bytes32)\":{\"params\":{\"interfaceName\":\"queried interface.\"},\"returns\":{\"_0\":\"implementationAddress address of the deployed contract that implements the interface.\"}}},\"title\":\"Provides addresses of the live contracts implementing certain interfaces.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"changeImplementationAddress(bytes32,address)\":{\"notice\":\"Updates the address of the contract that implements `interfaceName`.\"},\"getImplementationAddress(bytes32)\":{\"notice\":\"Gets the address of the contract that implements the given `interfaceName`.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/FinderInterface.sol\":\"FinderInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/oracle/interfaces/FinderInterface.sol\":{\"keccak256\":\"0x9166fbfe08e954eb86d33c114fcde7ce4fd0dda5d9d28b31210582bfc769fa86\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://e611e12bcaaebfdf65b67c566ff1d34708e757f01a445bd87c55862e89383b81\",\"dweb:/ipfs/QmYNSq5oopTShdS6j4VWKqoLxmQSRKmWebCxw6K4LfmKrf\"]}},\"version\":1}"
                }
            },
            "contracts/oracle/interfaces/OptimisticOracleInterface.sol": {
                "OptimisticOracleInterface": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "ancillaryBytesLimit",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "disputePrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "disputer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "disputePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "getRequest",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "refundOnDispute",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct OptimisticOracleInterface.Request",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "getState",
                            "outputs": [
                                {
                                    "internalType": "enum OptimisticOracleInterface.State",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "hasPrice",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "proposePrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "proposer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "proposePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "contract IERC20",
                                    "name": "currency",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "reward",
                                    "type": "uint256"
                                }
                            ],
                            "name": "requestPrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "bond",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setBond",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "customLiveness",
                                    "type": "uint256"
                                }
                            ],
                            "name": "setCustomLiveness",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "setRefundOnDispute",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "settle",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "payout",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "timestamp",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                }
                            ],
                            "name": "settleAndGetPrice",
                            "outputs": [
                                {
                                    "internalType": "int256",
                                    "name": "",
                                    "type": "int256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                }
                            ],
                            "name": "stampAncillaryData",
                            "outputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "ancillaryBytesLimit()": "c371dda7",
                            "disputePrice(address,bytes32,uint256,bytes)": "fba7f1e3",
                            "disputePriceFor(address,address,bytes32,uint256,bytes)": "76c7823f",
                            "getRequest(address,bytes32,uint256,bytes)": "a9904f9b",
                            "getState(address,bytes32,uint256,bytes)": "ba4b930c",
                            "hasPrice(address,bytes32,uint256,bytes)": "bc58ccaa",
                            "proposePrice(address,bytes32,uint256,bytes,int256)": "b8b4f908",
                            "proposePriceFor(address,address,bytes32,uint256,bytes,int256)": "7c82288f",
                            "requestPrice(bytes32,uint256,bytes,address,uint256)": "11df92f1",
                            "setBond(bytes32,uint256,bytes,uint256)": "ad5a755a",
                            "setCustomLiveness(bytes32,uint256,bytes,uint256)": "473c45fe",
                            "setRefundOnDispute(bytes32,uint256,bytes)": "91f58dcb",
                            "settle(address,bytes32,uint256,bytes)": "5e9a79a9",
                            "settleAndGetPrice(bytes32,uint256,bytes)": "53b59239",
                            "stampAncillaryData(bytes,address)": "af5d2f39"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"disputePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getRequest\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"refundOnDispute\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct OptimisticOracleInterface.Request\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"enum OptimisticOracleInterface.State\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"hasPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"}],\"name\":\"requestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"setBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"setCustomLiveness\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"setRefundOnDispute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"}],\"name\":\"settleAndGetPrice\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"stampAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\",\"kind\":\"dev\",\"methods\":{\"disputePrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"disputer\":\"address to set as the disputer.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was value (the proposal was incorrect).\"}},\"getRequest(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the Request data structure.\"}},\"getState(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the State enum value.\"}},\"hasPrice(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"true if price has resolved or settled, false otherwise.\"}},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data representing additional args being passed with the price request.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"identifier\":\"price identifier being requested.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.\",\"timestamp\":\"timestamp of the price being requested.\"},\"returns\":{\"totalBond\":\"default bond (final fee) + final fee that the proposer and disputer will be required to pay. This can be changed with a subsequent call to setBond().\"}},\"setBond(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"bond\":\"custom bond amount to set.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"new bond + final fee that the proposer and disputer will be required to pay. This can be changed again with a subsequent call to setBond().\"}},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"customLiveness\":\"new custom liveness.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"}},\"settle(address,bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"payout\":\"the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards.\"}},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"resolved price.\"}}},\"title\":\"Financial contract facing Oracle interface.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disputePrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price value for an existing price request with an active proposal.\"},\"disputePriceFor(address,address,bytes32,uint256,bytes)\":{\"notice\":\"Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\"},\"getRequest(address,bytes32,uint256,bytes)\":{\"notice\":\"Gets the current data structure containing all information about a price request.\"},\"getState(address,bytes32,uint256,bytes)\":{\"notice\":\"Returns the state of a price request.\"},\"hasPrice(address,bytes32,uint256,bytes)\":{\"notice\":\"Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\"},\"proposePrice(address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value for an existing price request.\"},\"proposePriceFor(address,address,bytes32,uint256,bytes,int256)\":{\"notice\":\"Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"requestPrice(bytes32,uint256,bytes,address,uint256)\":{\"notice\":\"Requests a new price.\"},\"setBond(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Set the proposal bond associated with a price request.\"},\"setCustomLiveness(bytes32,uint256,bytes,uint256)\":{\"notice\":\"Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before being auto-resolved.\"},\"setRefundOnDispute(bytes32,uint256,bytes)\":{\"notice\":\"Sets the request to refund the reward if the proposal is disputed. This can help to \\\"hedge\\\" the caller in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's bond, so there is still profit to be made even if the reward is refunded.\"},\"settle(address,bytes32,uint256,bytes)\":{\"notice\":\"Attempts to settle an outstanding price request. Will revert if it isn't settleable.\"},\"settleAndGetPrice(bytes32,uint256,bytes)\":{\"notice\":\"Retrieves a price that was previously requested by a caller. Reverts if the request is not settled or settleable. Note: this method is not view so that this call may actually settle the price request if it hasn't been settled.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":\"OptimisticOracleInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":{\"keccak256\":\"0x92e7280c1abd5f0c4fcd20247fc1b8428aaf4eeea59439c074d15fdaf9c64989\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d12bbcf0a91cef63c4767bffd047254599c5a1fce38e5e81d3005e102fdeef8\",\"dweb:/ipfs/QmTkd3AG9gdvBZq3HKCUW8eErvkguM2QqE3nUDGfvye3Yi\"]}},\"version\":1}"
                }
            },
            "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol": {
                "SkinnyOptimisticOracleInterface": {
                    "abi": [
                        {
                            "inputs": [],
                            "name": "ancillaryBytesLimit",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                }
                            ],
                            "name": "disputePrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "address",
                                    "name": "disputer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                }
                            ],
                            "name": "disputePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                }
                            ],
                            "name": "getState",
                            "outputs": [
                                {
                                    "internalType": "enum OptimisticOracleInterface.State",
                                    "name": "",
                                    "type": "uint8"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                }
                            ],
                            "name": "hasPrice",
                            "outputs": [
                                {
                                    "internalType": "bool",
                                    "name": "",
                                    "type": "bool"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "proposePrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                },
                                {
                                    "internalType": "address",
                                    "name": "proposer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "proposePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "contract IERC20",
                                    "name": "currency",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "reward",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "bond",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "customLiveness",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "address",
                                    "name": "proposer",
                                    "type": "address"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "proposedPrice",
                                    "type": "int256"
                                }
                            ],
                            "name": "requestAndProposePriceFor",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "contract IERC20",
                                    "name": "currency",
                                    "type": "address"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "reward",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "bond",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "customLiveness",
                                    "type": "uint256"
                                }
                            ],
                            "name": "requestPrice",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "totalBond",
                                    "type": "uint256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                },
                                {
                                    "internalType": "bytes32",
                                    "name": "identifier",
                                    "type": "bytes32"
                                },
                                {
                                    "internalType": "uint32",
                                    "name": "timestamp",
                                    "type": "uint32"
                                },
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "address",
                                            "name": "proposer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "address",
                                            "name": "disputer",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "contract IERC20",
                                            "name": "currency",
                                            "type": "address"
                                        },
                                        {
                                            "internalType": "bool",
                                            "name": "settled",
                                            "type": "bool"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "proposedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "int256",
                                            "name": "resolvedPrice",
                                            "type": "int256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "expirationTime",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "reward",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "finalFee",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "bond",
                                            "type": "uint256"
                                        },
                                        {
                                            "internalType": "uint256",
                                            "name": "customLiveness",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct SkinnyOptimisticOracleInterface.Request",
                                    "name": "request",
                                    "type": "tuple"
                                }
                            ],
                            "name": "settle",
                            "outputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "payout",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "int256",
                                    "name": "resolvedPrice",
                                    "type": "int256"
                                }
                            ],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "ancillaryData",
                                    "type": "bytes"
                                },
                                {
                                    "internalType": "address",
                                    "name": "requester",
                                    "type": "address"
                                }
                            ],
                            "name": "stampAncillaryData",
                            "outputs": [
                                {
                                    "internalType": "bytes",
                                    "name": "",
                                    "type": "bytes"
                                }
                            ],
                            "stateMutability": "pure",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "ancillaryBytesLimit()": "c371dda7",
                            "disputePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": "3a31577e",
                            "disputePriceFor(bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,address)": "9ce320c8",
                            "getState(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": "51205554",
                            "hasPrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": "a337e1ad",
                            "proposePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),int256)": "93c44ef7",
                            "proposePriceFor(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,int256)": "b1a166b2",
                            "requestAndProposePriceFor(bytes32,uint32,bytes,address,uint256,uint256,uint256,address,int256)": "af355d1e",
                            "requestPrice(bytes32,uint32,bytes,address,uint256,uint256,uint256)": "d6228407",
                            "settle(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))": "b730539f",
                            "stampAncillaryData(bytes,address)": "af5d2f39"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ancillaryBytesLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"disputePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"disputePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"getState\",\"outputs\":[{\"internalType\":\"enum OptimisticOracleInterface.State\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"hasPrice\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"proposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"}],\"name\":\"requestAndProposePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"name\":\"requestPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalBond\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"identifier\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"disputer\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"proposedPrice\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reward\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"finalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"customLiveness\",\"type\":\"uint256\"}],\"internalType\":\"struct SkinnyOptimisticOracleInterface.Request\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"payout\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"resolvedPrice\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"ancillaryData\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"}],\"name\":\"stampAncillaryData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface used by financial contracts to interact with the Oracle. Voters will use a different interface.\",\"kind\":\"dev\",\"methods\":{\"disputePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to dispute.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"disputePriceFor(bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,address)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"disputer\":\"address to set as the disputer.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to dispute.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the disputer once settled if the dispute was valid (the proposal was incorrect).\"}},\"getState(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"the State.\"}},\"hasPrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters. The hash of these parameters must match with the request hash that is associated with the price request unique ID {requester, identifier, timestamp, ancillaryData}, or this method will revert.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"_0\":\"boolean indicating true if price exists and false if not.\"}},\"proposePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to propose a price for.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"proposePriceFor(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,int256)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to propose a price for.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"requestAndProposePriceFor(bytes32,uint32,bytes,address,uint256,uint256,uint256,address,int256)\":{\"details\":\"The caller is the requester, but the proposer can be customized.\",\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"bond\":\"custom proposal bond to set for request. If set to 0, defaults to the final fee.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"customLiveness\":\"custom proposal liveness to set for request.\",\"identifier\":\"price identifier to identify the existing request.\",\"proposedPrice\":\"price being proposed.\",\"proposer\":\"address to set as the proposer.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"totalBond\":\"the amount that's pulled from the caller's wallet as a bond. The bond will be returned to the proposer once settled if the proposal is correct.\"}},\"requestPrice(bytes32,uint32,bytes,address,uint256,uint256,uint256)\":{\"params\":{\"ancillaryData\":\"ancillary data representing additional args being passed with the price request.\",\"bond\":\"custom proposal bond to set for request. If set to 0, defaults to the final fee.\",\"currency\":\"ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\",\"customLiveness\":\"custom proposal liveness to set for request.\",\"identifier\":\"price identifier being requested.\",\"reward\":\"reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,               which could make sense if the contract requests and proposes the value in the same call or               provides its own reward system.\",\"timestamp\":\"timestamp of the price being requested.\"},\"returns\":{\"totalBond\":\"default bond + final fee that the proposer and disputer will be required to pay.\"}},\"settle(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"identifier\":\"price identifier to identify the existing request.\",\"request\":\"price request parameters whose hash must match the request that the caller wants to settle.\",\"requester\":\"sender of the initial price request.\",\"timestamp\":\"timestamp to identify the existing request.\"},\"returns\":{\"payout\":\"the amount that the \\\"winner\\\" (proposer or disputer) receives on settlement. This amount includes the returned bonds as well as additional rewards.\",\"resolvedPrice\":\"the price that the request settled to.\"}},\"stampAncillaryData(bytes,address)\":{\"params\":{\"ancillaryData\":\"ancillary data of the price being requested.\",\"requester\":\"sender of the initial price request.\"},\"returns\":{\"_0\":\"the stamped ancillary bytes.\"}}},\"title\":\"Interface for the gas-cost-reduced version of the OptimisticOracle.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"disputePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Disputes a price request with an active proposal where caller is the disputer.\"},\"disputePriceFor(bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,address)\":{\"notice\":\"Disputes a price request with an active proposal on another address' behalf. Note: this address will receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\"},\"getState(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Computes the current state of a price request. See the State enum for more details.\"},\"hasPrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\"},\"proposePrice(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),int256)\":{\"notice\":\"Proposes a price value where caller is the proposer.\"},\"proposePriceFor(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256),address,int256)\":{\"notice\":\"Proposes a price value on another address' behalf. Note: this address will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"requestAndProposePriceFor(bytes32,uint32,bytes,address,uint256,uint256,uint256,address,int256)\":{\"notice\":\"Combines logic of requestPrice and proposePrice while taking advantage of gas savings from not having to overwrite Request params that a normal requestPrice() => proposePrice() flow would entail. Note: The proposer will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\"},\"requestPrice(bytes32,uint32,bytes,address,uint256,uint256,uint256)\":{\"notice\":\"Requests a new price.\"},\"settle(address,bytes32,uint32,bytes,(address,address,address,bool,int256,int256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Attempts to settle an outstanding price request. Will revert if it isn't settleable.\"},\"stampAncillaryData(bytes,address)\":{\"notice\":\"Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\"}},\"notice\":\"Differences from normal OptimisticOracle: - refundOnDispute: flag is removed, by default there are no refunds on disputes. - customizing request parameters: In the OptimisticOracle, parameters like `bond` and `customLiveness` can be reset   after a request is already made via `requestPrice`. In the SkinnyOptimisticOracle, these parameters can only be   set in `requestPrice`, which has an expanded input set. - settleAndGetPrice: Replaced by `settle`, which can only be called once per settleable request. The resolved price   can be fetched via the `Settle` event or the return value of `settle`. - general changes to interface: Functions that interact with existing requests all require the parameters of the   request to modify to be passed as input. These parameters must match with the existing request parameters or the   function will revert. This change reflects the internal refactor to store hashed request parameters instead of the   full request struct.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol\":\"SkinnyOptimisticOracleInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"contracts/oracle/interfaces/OptimisticOracleInterface.sol\":{\"keccak256\":\"0x92e7280c1abd5f0c4fcd20247fc1b8428aaf4eeea59439c074d15fdaf9c64989\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d12bbcf0a91cef63c4767bffd047254599c5a1fce38e5e81d3005e102fdeef8\",\"dweb:/ipfs/QmTkd3AG9gdvBZq3HKCUW8eErvkguM2QqE3nUDGfvye3Yi\"]},\"contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol\":{\"keccak256\":\"0x91d21e44a97b719106e8f97b99399a3d8dc3697badd01df06518892f38fe033f\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://68c350c822b256b43543ac4dd3dd1413ed95f25a9415d5dba4c562cd11d55716\",\"dweb:/ipfs/QmZyYeBnM59oPmWcK1KERNayg7xuHv12sLzzmqC42Lq76a\"]}},\"version\":1}"
                }
            },
            "contracts/oracle/interfaces/StoreInterface.sol": {
                "StoreInterface": {
                    "abi": [
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "currency",
                                    "type": "address"
                                }
                            ],
                            "name": "computeFinalFee",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "uint256",
                                    "name": "startTime",
                                    "type": "uint256"
                                },
                                {
                                    "internalType": "uint256",
                                    "name": "endTime",
                                    "type": "uint256"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "pfc",
                                    "type": "tuple"
                                }
                            ],
                            "name": "computeRegularFee",
                            "outputs": [
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "regularFee",
                                    "type": "tuple"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "latePenalty",
                                    "type": "tuple"
                                }
                            ],
                            "stateMutability": "view",
                            "type": "function"
                        },
                        {
                            "inputs": [],
                            "name": "payOracleFees",
                            "outputs": [],
                            "stateMutability": "payable",
                            "type": "function"
                        },
                        {
                            "inputs": [
                                {
                                    "internalType": "address",
                                    "name": "erc20Address",
                                    "type": "address"
                                },
                                {
                                    "components": [
                                        {
                                            "internalType": "uint256",
                                            "name": "rawValue",
                                            "type": "uint256"
                                        }
                                    ],
                                    "internalType": "struct FixedPoint.Unsigned",
                                    "name": "amount",
                                    "type": "tuple"
                                }
                            ],
                            "name": "payOracleFeesErc20",
                            "outputs": [],
                            "stateMutability": "nonpayable",
                            "type": "function"
                        }
                    ],
                    "evm": {
                        "bytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "deployedBytecode": {
                            "functionDebugData": {},
                            "generatedSources": [],
                            "immutableReferences": {},
                            "linkReferences": {},
                            "object": "",
                            "opcodes": "",
                            "sourceMap": ""
                        },
                        "methodIdentifiers": {
                            "computeFinalFee(address)": "5b97aadd",
                            "computeRegularFee(uint256,uint256,(uint256))": "74201feb",
                            "payOracleFees()": "cd3a9b24",
                            "payOracleFeesErc20(address,(uint256))": "8659d232"
                        }
                    },
                    "metadata": "{\"compiler\":{\"version\":\"0.8.9+commit.e5eed63a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"computeFinalFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"pfc\",\"type\":\"tuple\"}],\"name\":\"computeRegularFee\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"regularFee\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"latePenalty\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"payOracleFees\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"erc20Address\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"rawValue\",\"type\":\"uint256\"}],\"internalType\":\"struct FixedPoint.Unsigned\",\"name\":\"amount\",\"type\":\"tuple\"}],\"name\":\"payOracleFeesErc20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"computeFinalFee(address)\":{\"params\":{\"currency\":\"token used to pay the final fee.\"},\"returns\":{\"_0\":\"finalFee amount due.\"}},\"computeRegularFee(uint256,uint256,(uint256))\":{\"params\":{\"endTime\":\"end time until which the fee is paid.\",\"pfc\":\"\\\"profit from corruption\\\", or the maximum amount of margin currency that a token sponsor could extract from the contract through corrupting the price feed in their favor.\",\"startTime\":\"defines the beginning time from which the fee is paid.\"},\"returns\":{\"latePenalty\":\"for paying the fee after the deadline.\",\"regularFee\":\"amount owed for the duration from start to end time for the given pfc.\"}},\"payOracleFees()\":{\"details\":\"To be used by contracts whose margin currency is ETH.\"},\"payOracleFeesErc20(address,(uint256))\":{\"details\":\"To be used if the margin currency is an ERC20 token rather than ETH.\",\"params\":{\"amount\":\"number of tokens to transfer. An approval for at least this amount must exist.\",\"erc20Address\":\"address of the ERC20 token used to pay the fee.\"}}},\"title\":\"Interface that allows financial contracts to pay oracle fees for their use of the system.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"computeFinalFee(address)\":{\"notice\":\"Computes the final oracle fees that a contract should pay at settlement.\"},\"computeRegularFee(uint256,uint256,(uint256))\":{\"notice\":\"Computes the regular oracle fees that a contract should pay for a period.\"},\"payOracleFees()\":{\"notice\":\"Pays Oracle fees in ETH to the store.\"},\"payOracleFeesErc20(address,(uint256))\":{\"notice\":\"Pays oracle fees in the margin currency, erc20Address, to the store.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/oracle/interfaces/StoreInterface.sol\":\"StoreInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xf8e8d118a7a8b2e134181f7da655f6266aa3a0f9134b2605747139fcb0c5d835\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ec48567e7ad06acb670980d5cdf3fd7f3949bf12894f02d68c3bb43e75aa84f\",\"dweb:/ipfs/QmaG3R2J9cz92YT77vFjYrjMNU2wHp4ypwYD62HqDUqS5U\"]},\"@openzeppelin/contracts/utils/math/SafeMath.sol\":{\"keccak256\":\"0x2526b7c6a366fc211bbc176078ab02b83833e7682abcc5b3bed9d700b34e2a3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5f9529d3d365e8415155cee11394e0f7c0de2152b601b7e77508fce16cb4a509\",\"dweb:/ipfs/QmVhbcLVsAzvqfjsdLwy25XMjgVJm7Z3w2JCNiNbZF2GHT\"]},\"@openzeppelin/contracts/utils/math/SignedSafeMath.sol\":{\"keccak256\":\"0xd1ddc24b24f12a347093844dd645c3a96bcdce05d1f51b8650946ad404cb3c40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://873363c817ef68913ced271e77fc4af21d4a94ffba23de2b205c6e9de8ff6b72\",\"dweb:/ipfs/QmNmN46R3rrvTxMUjDTbZiCiqqTX9TRvWbiaN9qLrWQXPS\"]},\"contracts/common/implementation/FixedPoint.sol\":{\"keccak256\":\"0x996b97cc4fa5da4064e3aee500edc6972485d59a9334ceec81155e2c2f484dae\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://8d7c028926dc2b27e7dc103363dca8a43f60b3351f4a14bcb702660f95c68663\",\"dweb:/ipfs/QmXz4ieFjP5RxJ35F8GbPryYEGvFmxc4Gqx8EK7N57ixzT\"]},\"contracts/oracle/interfaces/StoreInterface.sol\":{\"keccak256\":\"0xbb73671684309c91ad5ef3da1474051d03f2e7d5882bed7f5c4317e5d4c768df\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://32386544d3119fd0187a8c4e8b01c739f508ab863faa04345cabc2544081f9e8\",\"dweb:/ipfs/QmYszDURs1x75rsejZkGt9zCkASXnJtufbNsL3XHe2eJPQ\"]}},\"version\":1}"
                }
            }
        },
        "errors": [
            {
                "component": "general",
                "errorCode": "1878",
                "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/common/implementation/MultiCaller.sol\n\n",
                "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
                "severity": "warning",
                "sourceLocation": {
                    "end": -1,
                    "file": "contracts/common/implementation/MultiCaller.sol",
                    "start": -1
                },
                "type": "Warning"
            }
        ],
        "sources": {
            "@openzeppelin/contracts/token/ERC20/ERC20.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                    "exportedSymbols": {
                        "Context": [
                            1152
                        ],
                        "ERC20": [
                            506
                        ],
                        "IERC20": [
                            584
                        ],
                        "IERC20Metadata": [
                            609
                        ]
                    },
                    "id": 507,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:0"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "./IERC20.sol",
                            "id": 2,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 507,
                            "sourceUnit": 585,
                            "src": "58:22:0",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
                            "file": "./extensions/IERC20Metadata.sol",
                            "id": 3,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 507,
                            "sourceUnit": 610,
                            "src": "81:41:0",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                            "file": "../../utils/Context.sol",
                            "id": 4,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 507,
                            "sourceUnit": 1153,
                            "src": "123:33:0",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 6,
                                        "name": "Context",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1152,
                                        "src": "1339:7:0"
                                    },
                                    "id": 7,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1339:7:0"
                                },
                                {
                                    "baseName": {
                                        "id": 8,
                                        "name": "IERC20",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 584,
                                        "src": "1348:6:0"
                                    },
                                    "id": 9,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1348:6:0"
                                },
                                {
                                    "baseName": {
                                        "id": 10,
                                        "name": "IERC20Metadata",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 609,
                                        "src": "1356:14:0"
                                    },
                                    "id": 11,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1356:14:0"
                                }
                            ],
                            "canonicalName": "ERC20",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 5,
                                "nodeType": "StructuredDocumentation",
                                "src": "158:1162:0",
                                "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n For a generic mechanism see {ERC20PresetMinterPauser}.\n TIP: For a detailed writeup see our guide\n https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n We have followed general OpenZeppelin guidelines: functions revert instead\n of returning `false` on failure. This behavior is nonetheless conventional\n and does not conflict with the expectations of ERC20 applications.\n Additionally, an {Approval} event is emitted on calls to {transferFrom}.\n This allows applications to reconstruct the allowance for all accounts just\n by listening to said events. Other implementations of the EIP may not emit\n these events, as it isn't required by the specification.\n Finally, the non-standard {decreaseAllowance} and {increaseAllowance}\n functions have been added to mitigate the well-known issues around setting\n allowances. See {IERC20-approve}."
                            },
                            "fullyImplemented": true,
                            "id": 506,
                            "linearizedBaseContracts": [
                                506,
                                609,
                                584,
                                1152
                            ],
                            "name": "ERC20",
                            "nameLocation": "1330:5:0",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "id": 15,
                                    "mutability": "mutable",
                                    "name": "_balances",
                                    "nameLocation": "1414:9:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 506,
                                    "src": "1377:46:0",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                    },
                                    "typeName": {
                                        "id": 14,
                                        "keyType": {
                                            "id": 12,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1386:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1377:28:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                        },
                                        "valueType": {
                                            "id": 13,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1397:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 21,
                                    "mutability": "mutable",
                                    "name": "_allowances",
                                    "nameLocation": "1488:11:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 506,
                                    "src": "1430:69: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": 20,
                                        "keyType": {
                                            "id": 16,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1439:7:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "1430:49:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                            "typeString": "mapping(address => mapping(address => uint256))"
                                        },
                                        "valueType": {
                                            "id": 19,
                                            "keyType": {
                                                "id": 17,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1459:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "nodeType": "Mapping",
                                            "src": "1450:28:0",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                "typeString": "mapping(address => uint256)"
                                            },
                                            "valueType": {
                                                "id": 18,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1470:7:0",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 23,
                                    "mutability": "mutable",
                                    "name": "_totalSupply",
                                    "nameLocation": "1522:12:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 506,
                                    "src": "1506:28:0",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 22,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1506:7:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 25,
                                    "mutability": "mutable",
                                    "name": "_name",
                                    "nameLocation": "1556:5:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 506,
                                    "src": "1541:20:0",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 24,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1541:6:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "constant": false,
                                    "id": 27,
                                    "mutability": "mutable",
                                    "name": "_symbol",
                                    "nameLocation": "1582:7:0",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 506,
                                    "src": "1567:22:0",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_string_storage",
                                        "typeString": "string"
                                    },
                                    "typeName": {
                                        "id": 26,
                                        "name": "string",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1567:6:0",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_string_storage_ptr",
                                            "typeString": "string"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 43,
                                        "nodeType": "Block",
                                        "src": "1955:57:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 37,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 35,
                                                        "name": "_name",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 25,
                                                        "src": "1965:5:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_storage",
                                                            "typeString": "string storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 36,
                                                        "name": "name_",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 30,
                                                        "src": "1973:5:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                        }
                                                    },
                                                    "src": "1965:13:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "id": 38,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1965:13:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 41,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 39,
                                                        "name": "_symbol",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 27,
                                                        "src": "1988:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_storage",
                                                            "typeString": "string storage ref"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 40,
                                                        "name": "symbol_",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 32,
                                                        "src": "1998:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                        }
                                                    },
                                                    "src": "1988:17:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "id": 42,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1988:17:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 28,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1596:297:0",
                                        "text": " @dev Sets the values for {name} and {symbol}.\n The defaut value of {decimals} is 18. To select a different value for\n {decimals} you should overload it.\n All two of these values are immutable: they can only be set once during\n construction."
                                    },
                                    "id": 44,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 33,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 30,
                                                "mutability": "mutable",
                                                "name": "name_",
                                                "nameLocation": "1925:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 44,
                                                "src": "1911:19:0",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 29,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1911:6:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 32,
                                                "mutability": "mutable",
                                                "name": "symbol_",
                                                "nameLocation": "1946:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 44,
                                                "src": "1932:21:0",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 31,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1932:6:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1910:44:0"
                                    },
                                    "returnParameters": {
                                        "id": 34,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1955:0:0"
                                    },
                                    "scope": 506,
                                    "src": "1898:114:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        596
                                    ],
                                    "body": {
                                        "id": 53,
                                        "nodeType": "Block",
                                        "src": "2146:29:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 51,
                                                    "name": "_name",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 25,
                                                    "src": "2163:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "functionReturnParameters": 50,
                                                "id": 52,
                                                "nodeType": "Return",
                                                "src": "2156:12:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 45,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2018:54:0",
                                        "text": " @dev Returns the name of the token."
                                    },
                                    "functionSelector": "06fdde03",
                                    "id": 54,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "name",
                                    "nameLocation": "2086:4:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 47,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "2113:8:0"
                                    },
                                    "parameters": {
                                        "id": 46,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2090:2:0"
                                    },
                                    "returnParameters": {
                                        "id": 50,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 49,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 54,
                                                "src": "2131:13:0",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 48,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2131:6:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2130:15:0"
                                    },
                                    "scope": 506,
                                    "src": "2077:98:0",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        602
                                    ],
                                    "body": {
                                        "id": 63,
                                        "nodeType": "Block",
                                        "src": "2359:31:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 61,
                                                    "name": "_symbol",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 27,
                                                    "src": "2376:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage",
                                                        "typeString": "string storage ref"
                                                    }
                                                },
                                                "functionReturnParameters": 60,
                                                "id": 62,
                                                "nodeType": "Return",
                                                "src": "2369:14:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 55,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2181:102:0",
                                        "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name."
                                    },
                                    "functionSelector": "95d89b41",
                                    "id": 64,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "symbol",
                                    "nameLocation": "2297:6:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 57,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "2326:8:0"
                                    },
                                    "parameters": {
                                        "id": 56,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2303:2:0"
                                    },
                                    "returnParameters": {
                                        "id": 60,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 59,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 64,
                                                "src": "2344:13:0",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 58,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2344:6:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2343:15:0"
                                    },
                                    "scope": 506,
                                    "src": "2288:102:0",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        608
                                    ],
                                    "body": {
                                        "id": 73,
                                        "nodeType": "Block",
                                        "src": "3079:26:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "hexValue": "3138",
                                                    "id": 71,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3096:2:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_18_by_1",
                                                        "typeString": "int_const 18"
                                                    },
                                                    "value": "18"
                                                },
                                                "functionReturnParameters": 70,
                                                "id": 72,
                                                "nodeType": "Return",
                                                "src": "3089:9:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 65,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2396:613:0",
                                        "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5,05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the value {ERC20} uses, unless this function is\n overridden;\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}."
                                    },
                                    "functionSelector": "313ce567",
                                    "id": 74,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "decimals",
                                    "nameLocation": "3023:8:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 67,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3054:8:0"
                                    },
                                    "parameters": {
                                        "id": 66,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3031:2:0"
                                    },
                                    "returnParameters": {
                                        "id": 70,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 69,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 74,
                                                "src": "3072:5:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 68,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3072:5:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3071:7:0"
                                    },
                                    "scope": 506,
                                    "src": "3014:91:0",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        515
                                    ],
                                    "body": {
                                        "id": 83,
                                        "nodeType": "Block",
                                        "src": "3235:36:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 81,
                                                    "name": "_totalSupply",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 23,
                                                    "src": "3252:12:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 80,
                                                "id": 82,
                                                "nodeType": "Return",
                                                "src": "3245:19:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 75,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3111:49:0",
                                        "text": " @dev See {IERC20-totalSupply}."
                                    },
                                    "functionSelector": "18160ddd",
                                    "id": 84,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "totalSupply",
                                    "nameLocation": "3174:11:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 77,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3208:8:0"
                                    },
                                    "parameters": {
                                        "id": 76,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3185:2:0"
                                    },
                                    "returnParameters": {
                                        "id": 80,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 79,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 84,
                                                "src": "3226:7:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 78,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3226:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3225:9:0"
                                    },
                                    "scope": 506,
                                    "src": "3165:106:0",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        523
                                    ],
                                    "body": {
                                        "id": 97,
                                        "nodeType": "Block",
                                        "src": "3412:42:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "id": 93,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15,
                                                        "src": "3429:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 95,
                                                    "indexExpression": {
                                                        "id": 94,
                                                        "name": "account",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 87,
                                                        "src": "3439:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "3429:18:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 92,
                                                "id": 96,
                                                "nodeType": "Return",
                                                "src": "3422:25:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 85,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3277:47:0",
                                        "text": " @dev See {IERC20-balanceOf}."
                                    },
                                    "functionSelector": "70a08231",
                                    "id": 98,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "balanceOf",
                                    "nameLocation": "3338:9:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 89,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3385:8:0"
                                    },
                                    "parameters": {
                                        "id": 88,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 87,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "3356:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 98,
                                                "src": "3348:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 86,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3348:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3347:17:0"
                                    },
                                    "returnParameters": {
                                        "id": 92,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 91,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 98,
                                                "src": "3403:7:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 90,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3403:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3402:9:0"
                                    },
                                    "scope": 506,
                                    "src": "3329:125:0",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        533
                                    ],
                                    "body": {
                                        "id": 118,
                                        "nodeType": "Block",
                                        "src": "3749:80:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 110,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1140,
                                                                "src": "3769:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 111,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3769:12:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 112,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 101,
                                                            "src": "3783:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 113,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 103,
                                                            "src": "3794: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": 109,
                                                        "name": "_transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 340,
                                                        "src": "3759:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 114,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3759:42:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 115,
                                                "nodeType": "ExpressionStatement",
                                                "src": "3759:42:0"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 116,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3818:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 108,
                                                "id": 117,
                                                "nodeType": "Return",
                                                "src": "3811:11:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 99,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3460:192:0",
                                        "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `recipient` cannot be the zero address.\n - the caller must have a balance of at least `amount`."
                                    },
                                    "functionSelector": "a9059cbb",
                                    "id": 119,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transfer",
                                    "nameLocation": "3666:8:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 105,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3725:8:0"
                                    },
                                    "parameters": {
                                        "id": 104,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 101,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "3683:9:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 119,
                                                "src": "3675:17:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 100,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3675:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 103,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "3702:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 119,
                                                "src": "3694:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 102,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3694:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3674:35:0"
                                    },
                                    "returnParameters": {
                                        "id": 108,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 107,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 119,
                                                "src": "3743:4:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 106,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3743:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3742:6:0"
                                    },
                                    "scope": 506,
                                    "src": "3657:172:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        543
                                    ],
                                    "body": {
                                        "id": 136,
                                        "nodeType": "Block",
                                        "src": "3985:51:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 130,
                                                            "name": "_allowances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 21,
                                                            "src": "4002:11:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(address => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 132,
                                                        "indexExpression": {
                                                            "id": 131,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 122,
                                                            "src": "4014:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "4002:18:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 134,
                                                    "indexExpression": {
                                                        "id": 133,
                                                        "name": "spender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 124,
                                                        "src": "4021:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "4002:27:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 129,
                                                "id": 135,
                                                "nodeType": "Return",
                                                "src": "3995:34:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 120,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3835:47:0",
                                        "text": " @dev See {IERC20-allowance}."
                                    },
                                    "functionSelector": "dd62ed3e",
                                    "id": 137,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "allowance",
                                    "nameLocation": "3896:9:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 126,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "3958:8:0"
                                    },
                                    "parameters": {
                                        "id": 125,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 122,
                                                "mutability": "mutable",
                                                "name": "owner",
                                                "nameLocation": "3914:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 137,
                                                "src": "3906:13:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 121,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3906:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 124,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "3929:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 137,
                                                "src": "3921:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 123,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3921:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3905:32:0"
                                    },
                                    "returnParameters": {
                                        "id": 129,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 128,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 137,
                                                "src": "3976:7:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 127,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3976:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3975:9:0"
                                    },
                                    "scope": 506,
                                    "src": "3887:149:0",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        553
                                    ],
                                    "body": {
                                        "id": 157,
                                        "nodeType": "Block",
                                        "src": "4263:77:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 149,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1140,
                                                                "src": "4282:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 150,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4282:12:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 151,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 140,
                                                            "src": "4296:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 152,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 142,
                                                            "src": "4305: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": 148,
                                                        "name": "_approve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 494,
                                                        "src": "4273:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 153,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4273:39:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 154,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4273:39:0"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 155,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "4329:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 147,
                                                "id": 156,
                                                "nodeType": "Return",
                                                "src": "4322:11:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 138,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4042:127:0",
                                        "text": " @dev See {IERC20-approve}.\n Requirements:\n - `spender` cannot be the zero address."
                                    },
                                    "functionSelector": "095ea7b3",
                                    "id": 158,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "approve",
                                    "nameLocation": "4183:7:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 144,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "4239:8:0"
                                    },
                                    "parameters": {
                                        "id": 143,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 140,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "4199:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 158,
                                                "src": "4191:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 139,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4191:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 142,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "4216:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 158,
                                                "src": "4208:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 141,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4208:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4190:33:0"
                                    },
                                    "returnParameters": {
                                        "id": 147,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 146,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 158,
                                                "src": "4257:4:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 145,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4257:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4256:6:0"
                                    },
                                    "scope": 506,
                                    "src": "4174:166:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        565
                                    ],
                                    "body": {
                                        "id": 204,
                                        "nodeType": "Block",
                                        "src": "4919:302:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 172,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 161,
                                                            "src": "4939:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 173,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 163,
                                                            "src": "4947:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 174,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 165,
                                                            "src": "4958: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": 171,
                                                        "name": "_transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 340,
                                                        "src": "4929:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 175,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4929:36:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 176,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4929:36:0"
                                            },
                                            {
                                                "assignments": [
                                                    178
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 178,
                                                        "mutability": "mutable",
                                                        "name": "currentAllowance",
                                                        "nameLocation": "4984:16:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 204,
                                                        "src": "4976:24:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 177,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4976:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 185,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 179,
                                                            "name": "_allowances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 21,
                                                            "src": "5003:11:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(address => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 181,
                                                        "indexExpression": {
                                                            "id": 180,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 161,
                                                            "src": "5015:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "5003:19:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 184,
                                                    "indexExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 182,
                                                            "name": "_msgSender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1140,
                                                            "src": "5023:10:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                "typeString": "function () view returns (address)"
                                                            }
                                                        },
                                                        "id": 183,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "5023:12:0",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "5003:33:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4976:60:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 189,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 187,
                                                                "name": "currentAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 178,
                                                                "src": "5054:16:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 188,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 165,
                                                                "src": "5074:6:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5054:26:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365",
                                                            "id": 190,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5082:42:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                                            },
                                                            "value": "ERC20: transfer amount exceeds allowance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_974d1b4421da69cc60b481194f0dad36a5bb4e23da810da7a7fb30cdba178330",
                                                                "typeString": "literal_string \"ERC20: transfer amount exceeds allowance\""
                                                            }
                                                        ],
                                                        "id": 186,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5046:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 191,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5046:79:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 192,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5046:79:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 194,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 161,
                                                            "src": "5144:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 195,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1140,
                                                                "src": "5152:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 196,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5152:12:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 199,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 197,
                                                                "name": "currentAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 178,
                                                                "src": "5166:16:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 198,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 165,
                                                                "src": "5185:6:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5166:25: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": 193,
                                                        "name": "_approve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 494,
                                                        "src": "5135:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 200,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5135:57:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 201,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5135:57:0"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 202,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "5210:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 170,
                                                "id": 203,
                                                "nodeType": "Return",
                                                "src": "5203:11:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 159,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4346:456:0",
                                        "text": " @dev See {IERC20-transferFrom}.\n Emits an {Approval} event indicating the updated allowance. This is not\n required by the EIP. See the note at the beginning of {ERC20}.\n Requirements:\n - `sender` and `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`.\n - the caller must have allowance for ``sender``'s tokens of at least\n `amount`."
                                    },
                                    "functionSelector": "23b872dd",
                                    "id": 205,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transferFrom",
                                    "nameLocation": "4816:12:0",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 167,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "4895:8:0"
                                    },
                                    "parameters": {
                                        "id": 166,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 161,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "4837:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 205,
                                                "src": "4829:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 160,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4829:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 163,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "4853:9:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 205,
                                                "src": "4845:17:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 162,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4845:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 165,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "4872:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 205,
                                                "src": "4864:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 164,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4864:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4828:51:0"
                                    },
                                    "returnParameters": {
                                        "id": 170,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 169,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 205,
                                                "src": "4913:4:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 168,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4913:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4912:6:0"
                                    },
                                    "scope": 506,
                                    "src": "4807:414:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 231,
                                        "nodeType": "Block",
                                        "src": "5710:118:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 216,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1140,
                                                                "src": "5729:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 217,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5729:12:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 218,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 208,
                                                            "src": "5743:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 226,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "baseExpression": {
                                                                        "id": 219,
                                                                        "name": "_allowances",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 21,
                                                                        "src": "5752:11:0",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                            "typeString": "mapping(address => mapping(address => uint256))"
                                                                        }
                                                                    },
                                                                    "id": 222,
                                                                    "indexExpression": {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 220,
                                                                            "name": "_msgSender",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1140,
                                                                            "src": "5764:10:0",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                                "typeString": "function () view returns (address)"
                                                                            }
                                                                        },
                                                                        "id": 221,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "5764:12:0",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "5752:25:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                        "typeString": "mapping(address => uint256)"
                                                                    }
                                                                },
                                                                "id": 224,
                                                                "indexExpression": {
                                                                    "id": 223,
                                                                    "name": "spender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 208,
                                                                    "src": "5778:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "5752:34:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "id": 225,
                                                                "name": "addedValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 210,
                                                                "src": "5789:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5752:47: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": 215,
                                                        "name": "_approve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 494,
                                                        "src": "5720:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 227,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5720:80:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 228,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5720:80:0"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 229,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "5817:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 214,
                                                "id": 230,
                                                "nodeType": "Return",
                                                "src": "5810:11:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 206,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5227:384:0",
                                        "text": " @dev Atomically increases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address."
                                    },
                                    "functionSelector": "39509351",
                                    "id": 232,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "increaseAllowance",
                                    "nameLocation": "5625:17:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 211,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 208,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "5651:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 232,
                                                "src": "5643:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 207,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5643:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 210,
                                                "mutability": "mutable",
                                                "name": "addedValue",
                                                "nameLocation": "5668:10:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 232,
                                                "src": "5660:18:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 209,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5660:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5642:37:0"
                                    },
                                    "returnParameters": {
                                        "id": 214,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 213,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 232,
                                                "src": "5704:4:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 212,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5704:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5703:6:0"
                                    },
                                    "scope": 506,
                                    "src": "5616:212:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 269,
                                        "nodeType": "Block",
                                        "src": "6414:272:0",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    243
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 243,
                                                        "mutability": "mutable",
                                                        "name": "currentAllowance",
                                                        "nameLocation": "6432:16:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 269,
                                                        "src": "6424:24:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 242,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6424:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 250,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "baseExpression": {
                                                            "id": 244,
                                                            "name": "_allowances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 21,
                                                            "src": "6451:11:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                "typeString": "mapping(address => mapping(address => uint256))"
                                                            }
                                                        },
                                                        "id": 247,
                                                        "indexExpression": {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 245,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1140,
                                                                "src": "6463:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 246,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6463:12:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "IndexAccess",
                                                        "src": "6451:25:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 249,
                                                    "indexExpression": {
                                                        "id": 248,
                                                        "name": "spender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 235,
                                                        "src": "6477:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "6451:34:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6424:61:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 254,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 252,
                                                                "name": "currentAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 243,
                                                                "src": "6503:16:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 253,
                                                                "name": "subtractedValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 237,
                                                                "src": "6523:15:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "6503:35:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                                            "id": 255,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6540:39:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                                                "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                                            },
                                                            "value": "ERC20: decreased allowance below zero"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_f8b476f7d28209d77d4a4ac1fe36b9f8259aa1bb6bddfa6e89de7e51615cf8a8",
                                                                "typeString": "literal_string \"ERC20: decreased allowance below zero\""
                                                            }
                                                        ],
                                                        "id": 251,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6495:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 256,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6495:85:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 257,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6495:85:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 259,
                                                                "name": "_msgSender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1140,
                                                                "src": "6599:10:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view returns (address)"
                                                                }
                                                            },
                                                            "id": 260,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6599:12:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 261,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 235,
                                                            "src": "6613:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 264,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 262,
                                                                "name": "currentAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 243,
                                                                "src": "6622:16:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 263,
                                                                "name": "subtractedValue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 237,
                                                                "src": "6641:15:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "6622:34: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": 258,
                                                        "name": "_approve",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 494,
                                                        "src": "6590:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 265,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6590:67:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 266,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6590:67:0"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 267,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "6675:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 241,
                                                "id": 268,
                                                "nodeType": "Return",
                                                "src": "6668:11:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 233,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5834:476:0",
                                        "text": " @dev Atomically decreases the allowance granted to `spender` by the caller.\n This is an alternative to {approve} that can be used as a mitigation for\n problems described in {IERC20-approve}.\n Emits an {Approval} event indicating the updated allowance.\n Requirements:\n - `spender` cannot be the zero address.\n - `spender` must have allowance for the caller of at least\n `subtractedValue`."
                                    },
                                    "functionSelector": "a457c2d7",
                                    "id": 270,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "decreaseAllowance",
                                    "nameLocation": "6324:17:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 238,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 235,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "6350:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 270,
                                                "src": "6342:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 234,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6342:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 237,
                                                "mutability": "mutable",
                                                "name": "subtractedValue",
                                                "nameLocation": "6367:15:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 270,
                                                "src": "6359:23:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 236,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6359:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6341:42:0"
                                    },
                                    "returnParameters": {
                                        "id": 241,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 240,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 270,
                                                "src": "6408:4:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 239,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6408:4:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6407:6:0"
                                    },
                                    "scope": 506,
                                    "src": "6315:371:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 339,
                                        "nodeType": "Block",
                                        "src": "7247:505:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 286,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 281,
                                                                "name": "sender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 273,
                                                                "src": "7265:6:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 284,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7283: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": 283,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "7275:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 282,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7275:7:0",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 285,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7275:10:0",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "7265:20:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373",
                                                            "id": 287,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7287:39:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                                                            },
                                                            "value": "ERC20: transfer from the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_baecc556b46f4ed0f2b4cb599d60785ac8563dd2dc0a5bf12edea1c39e5e1fea",
                                                                "typeString": "literal_string \"ERC20: transfer from the zero address\""
                                                            }
                                                        ],
                                                        "id": 280,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7257:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 288,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7257:70:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 289,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7257:70:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 296,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 291,
                                                                "name": "recipient",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 275,
                                                                "src": "7345:9:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 294,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7366: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": 293,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "7358:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 292,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7358:7:0",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 295,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7358:10:0",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "7345:23:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a207472616e7366657220746f20746865207a65726f2061646472657373",
                                                            "id": 297,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7370:37:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                                                            },
                                                            "value": "ERC20: transfer to the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_0557e210f7a69a685100a7e4e3d0a7024c546085cee28910fd17d0b081d9516f",
                                                                "typeString": "literal_string \"ERC20: transfer to the zero address\""
                                                            }
                                                        ],
                                                        "id": 290,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7337:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 298,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7337:71:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 299,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7337:71:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 301,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 273,
                                                            "src": "7440:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 302,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 275,
                                                            "src": "7448:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 303,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 277,
                                                            "src": "7459: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": 300,
                                                        "name": "_beforeTokenTransfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 505,
                                                        "src": "7419:20:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 304,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7419:47:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 305,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7419:47:0"
                                            },
                                            {
                                                "assignments": [
                                                    307
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 307,
                                                        "mutability": "mutable",
                                                        "name": "senderBalance",
                                                        "nameLocation": "7485:13:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 339,
                                                        "src": "7477:21:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 306,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "7477:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 311,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 308,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15,
                                                        "src": "7501:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 310,
                                                    "indexExpression": {
                                                        "id": 309,
                                                        "name": "sender",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 273,
                                                        "src": "7511:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "7501:17:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "7477:41:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 315,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 313,
                                                                "name": "senderBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 307,
                                                                "src": "7536:13:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 314,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 277,
                                                                "src": "7553:6:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "7536:23:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365",
                                                            "id": 316,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7561:40:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                                            },
                                                            "value": "ERC20: transfer amount exceeds balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_4107e8a8b9e94bf8ff83080ddec1c0bffe897ebc2241b89d44f66b3d274088b6",
                                                                "typeString": "literal_string \"ERC20: transfer amount exceeds balance\""
                                                            }
                                                        ],
                                                        "id": 312,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7528:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 317,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7528:74:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 318,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7528:74:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 325,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 319,
                                                            "name": "_balances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15,
                                                            "src": "7612:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 321,
                                                        "indexExpression": {
                                                            "id": 320,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 273,
                                                            "src": "7622:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "7612:17:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 324,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 322,
                                                            "name": "senderBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 307,
                                                            "src": "7632:13:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "-",
                                                        "rightExpression": {
                                                            "id": 323,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 277,
                                                            "src": "7648:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "7632:22:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "7612:42:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 326,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7612:42:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 331,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 327,
                                                            "name": "_balances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15,
                                                            "src": "7664:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 329,
                                                        "indexExpression": {
                                                            "id": 328,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 275,
                                                            "src": "7674:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "7664:20:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 330,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 277,
                                                        "src": "7688:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "7664:30:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 332,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7664:30:0"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 334,
                                                            "name": "sender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 273,
                                                            "src": "7719:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 335,
                                                            "name": "recipient",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 275,
                                                            "src": "7727:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 336,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 277,
                                                            "src": "7738: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": 333,
                                                        "name": "Transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 574,
                                                        "src": "7710:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 337,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7710:35:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 338,
                                                "nodeType": "EmitStatement",
                                                "src": "7705:40:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 271,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6692:463:0",
                                        "text": " @dev Moves tokens `amount` from `sender` to `recipient`.\n This is internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n Requirements:\n - `sender` cannot be the zero address.\n - `recipient` cannot be the zero address.\n - `sender` must have a balance of at least `amount`."
                                    },
                                    "id": 340,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_transfer",
                                    "nameLocation": "7169:9:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 278,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 273,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "7187:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 340,
                                                "src": "7179:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 272,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7179:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 275,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "7203:9:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 340,
                                                "src": "7195:17:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 274,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7195:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 277,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "7222:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 340,
                                                "src": "7214:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 276,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7214:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7178:51:0"
                                    },
                                    "returnParameters": {
                                        "id": 279,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7247:0:0"
                                    },
                                    "scope": 506,
                                    "src": "7160:592:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 386,
                                        "nodeType": "Block",
                                        "src": "8088:265:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 354,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 349,
                                                                "name": "account",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 343,
                                                                "src": "8106:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 352,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "8125: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": 351,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "8117:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 350,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "8117:7:0",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 353,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8117:10:0",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "8106:21:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a206d696e7420746f20746865207a65726f2061646472657373",
                                                            "id": 355,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8129:33:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                                                            },
                                                            "value": "ERC20: mint to the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_fc0b381caf0a47702017f3c4b358ebe3d3aff6c60ce819a8bf3ef5a95d4f202e",
                                                                "typeString": "literal_string \"ERC20: mint to the zero address\""
                                                            }
                                                        ],
                                                        "id": 348,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8098:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 356,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8098:65:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 357,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8098:65:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 361,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8203: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": 360,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "8195:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 359,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "8195:7:0",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 362,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "8195:10:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 363,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 343,
                                                            "src": "8207:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 364,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 345,
                                                            "src": "8216: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": 358,
                                                        "name": "_beforeTokenTransfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 505,
                                                        "src": "8174:20:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 365,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8174:49:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 366,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8174:49:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 369,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 367,
                                                        "name": "_totalSupply",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 23,
                                                        "src": "8234:12:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 368,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 345,
                                                        "src": "8250:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "8234:22:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 370,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8234:22:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 375,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 371,
                                                            "name": "_balances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15,
                                                            "src": "8266:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 373,
                                                        "indexExpression": {
                                                            "id": 372,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 343,
                                                            "src": "8276:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "8266:18:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 374,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 345,
                                                        "src": "8288:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "8266:28:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 376,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8266:28:0"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 380,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8326: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": 379,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "8318:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 378,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "8318:7:0",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 381,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "8318:10:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 382,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 343,
                                                            "src": "8330:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 383,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 345,
                                                            "src": "8339: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": 377,
                                                        "name": "Transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 574,
                                                        "src": "8309:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 384,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8309:37:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 385,
                                                "nodeType": "EmitStatement",
                                                "src": "8304:42:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 341,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7758:260:0",
                                        "text": "@dev Creates `amount` tokens and assigns them to `account`, increasing\n the total supply.\n Emits a {Transfer} event with `from` set to the zero address.\n Requirements:\n - `to` cannot be the zero address."
                                    },
                                    "id": 387,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_mint",
                                    "nameLocation": "8032:5:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 346,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 343,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "8046:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 387,
                                                "src": "8038:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 342,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8038:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 345,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "8063:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 387,
                                                "src": "8055:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 344,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8055:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8037:33:0"
                                    },
                                    "returnParameters": {
                                        "id": 347,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8088:0:0"
                                    },
                                    "scope": 506,
                                    "src": "8023:330:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 448,
                                        "nodeType": "Block",
                                        "src": "8738:418:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 401,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 396,
                                                                "name": "account",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 390,
                                                                "src": "8756:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 399,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "8775: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": 398,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "8767:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 397,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "8767:7:0",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 400,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8767:10:0",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "8756:21:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a206275726e2066726f6d20746865207a65726f2061646472657373",
                                                            "id": 402,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8779:35:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                                                            },
                                                            "value": "ERC20: burn from the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b16788493b576042bb52c50ed56189e0b250db113c7bfb1c3897d25cf9632d7f",
                                                                "typeString": "literal_string \"ERC20: burn from the zero address\""
                                                            }
                                                        ],
                                                        "id": 395,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8748:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 403,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8748:67:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 404,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8748:67:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 406,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 390,
                                                            "src": "8847:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 409,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "8864: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": 408,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "8856:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 407,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "8856:7:0",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 410,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "8856:10:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 411,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 392,
                                                            "src": "8868: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": 405,
                                                        "name": "_beforeTokenTransfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 505,
                                                        "src": "8826:20:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 412,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8826:49:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 413,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8826:49:0"
                                            },
                                            {
                                                "assignments": [
                                                    415
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 415,
                                                        "mutability": "mutable",
                                                        "name": "accountBalance",
                                                        "nameLocation": "8894:14:0",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 448,
                                                        "src": "8886:22:0",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 414,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "8886:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 419,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 416,
                                                        "name": "_balances",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 15,
                                                        "src": "8911:9:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                            "typeString": "mapping(address => uint256)"
                                                        }
                                                    },
                                                    "id": 418,
                                                    "indexExpression": {
                                                        "id": 417,
                                                        "name": "account",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 390,
                                                        "src": "8921:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "8911:18:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "8886:43:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 423,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 421,
                                                                "name": "accountBalance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 415,
                                                                "src": "8947:14:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 422,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 392,
                                                                "src": "8965:6:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "8947:24:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365",
                                                            "id": 424,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8973:36:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                                            },
                                                            "value": "ERC20: burn amount exceeds balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_149b126e7125232b4200af45303d04fba8b74653b1a295a6a561a528c33fefdd",
                                                                "typeString": "literal_string \"ERC20: burn amount exceeds balance\""
                                                            }
                                                        ],
                                                        "id": 420,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8939:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 425,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8939:71:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 426,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8939:71:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 433,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 427,
                                                            "name": "_balances",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 15,
                                                            "src": "9020:9:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 429,
                                                        "indexExpression": {
                                                            "id": 428,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 390,
                                                            "src": "9030:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "9020:18:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 432,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 430,
                                                            "name": "accountBalance",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 415,
                                                            "src": "9041:14:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "-",
                                                        "rightExpression": {
                                                            "id": 431,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 392,
                                                            "src": "9058:6:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "9041:23:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9020:44:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 434,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9020:44:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 437,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 435,
                                                        "name": "_totalSupply",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 23,
                                                        "src": "9074:12:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "id": 436,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 392,
                                                        "src": "9090:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9074:22:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 438,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9074:22:0"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 440,
                                                            "name": "account",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 390,
                                                            "src": "9121:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 443,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "9138: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": 442,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "9130:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 441,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "9130:7:0",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 444,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "9130:10:0",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 445,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 392,
                                                            "src": "9142: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": 439,
                                                        "name": "Transfer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 574,
                                                        "src": "9112:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 446,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9112:37:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 447,
                                                "nodeType": "EmitStatement",
                                                "src": "9107:42:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 388,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8359:309:0",
                                        "text": " @dev Destroys `amount` tokens from `account`, reducing the\n total supply.\n Emits a {Transfer} event with `to` set to the zero address.\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens."
                                    },
                                    "id": 449,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_burn",
                                    "nameLocation": "8682:5:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 393,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 390,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "8696:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 449,
                                                "src": "8688:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 389,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8688:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 392,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "8713:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 449,
                                                "src": "8705:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 391,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8705:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8687:33:0"
                                    },
                                    "returnParameters": {
                                        "id": 394,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8738:0:0"
                                    },
                                    "scope": 506,
                                    "src": "8673:483:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 493,
                                        "nodeType": "Block",
                                        "src": "9662:257:0",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 465,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 460,
                                                                "name": "owner",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 452,
                                                                "src": "9680:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 463,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9697: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": 462,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "9689:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 461,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "9689:7:0",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 464,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9689:10:0",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "9680:19:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373",
                                                            "id": 466,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9701:38:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                                                            },
                                                            "value": "ERC20: approve from the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c953f4879035ed60e766b34720f656aab5c697b141d924c283124ecedb91c208",
                                                                "typeString": "literal_string \"ERC20: approve from the zero address\""
                                                            }
                                                        ],
                                                        "id": 459,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "9672:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 467,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9672:68:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 468,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9672:68:0"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 475,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 470,
                                                                "name": "spender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 454,
                                                                "src": "9758:7:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 473,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "9777: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": 472,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "9769:7:0",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 471,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "9769:7:0",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 474,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9769:10:0",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "9758:21:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "45524332303a20617070726f766520746f20746865207a65726f2061646472657373",
                                                            "id": 476,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9781:36:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                                                            },
                                                            "value": "ERC20: approve to the zero address"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_24883cc5fe64ace9d0df1893501ecb93c77180f0ff69cca79affb3c316dc8029",
                                                                "typeString": "literal_string \"ERC20: approve to the zero address\""
                                                            }
                                                        ],
                                                        "id": 469,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "9750:7:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 477,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9750:68:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 478,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9750:68:0"
                                            },
                                            {
                                                "expression": {
                                                    "id": 485,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "baseExpression": {
                                                                "id": 479,
                                                                "name": "_allowances",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 21,
                                                                "src": "9829:11:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                                                    "typeString": "mapping(address => mapping(address => uint256))"
                                                                }
                                                            },
                                                            "id": 482,
                                                            "indexExpression": {
                                                                "id": 480,
                                                                "name": "owner",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 452,
                                                                "src": "9841:5:0",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "IndexAccess",
                                                            "src": "9829:18:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                                                "typeString": "mapping(address => uint256)"
                                                            }
                                                        },
                                                        "id": 483,
                                                        "indexExpression": {
                                                            "id": 481,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 454,
                                                            "src": "9848:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "9829:27:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 484,
                                                        "name": "amount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 456,
                                                        "src": "9859:6:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9829:36:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 486,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9829:36:0"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 488,
                                                            "name": "owner",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 452,
                                                            "src": "9889:5:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 489,
                                                            "name": "spender",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 454,
                                                            "src": "9896:7:0",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 490,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 456,
                                                            "src": "9905: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": 487,
                                                        "name": "Approval",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 583,
                                                        "src": "9880:8:0",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 491,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9880:32:0",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 492,
                                                "nodeType": "EmitStatement",
                                                "src": "9875:37:0"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 450,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9162:412:0",
                                        "text": " @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address."
                                    },
                                    "id": 494,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_approve",
                                    "nameLocation": "9588:8:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 457,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 452,
                                                "mutability": "mutable",
                                                "name": "owner",
                                                "nameLocation": "9605:5:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 494,
                                                "src": "9597:13:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 451,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9597:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 454,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "9620:7:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 494,
                                                "src": "9612:15:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 453,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9612:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 456,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "9637:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 494,
                                                "src": "9629:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 455,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9629:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9596:48:0"
                                    },
                                    "returnParameters": {
                                        "id": 458,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9662:0:0"
                                    },
                                    "scope": 506,
                                    "src": "9579:340:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 504,
                                        "nodeType": "Block",
                                        "src": "10595:3:0",
                                        "statements": []
                                    },
                                    "documentation": {
                                        "id": 495,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9925:576:0",
                                        "text": " @dev Hook that is called before any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n will be to transferred to `to`.\n - when `from` is zero, `amount` tokens will be minted for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
                                    },
                                    "id": 505,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_beforeTokenTransfer",
                                    "nameLocation": "10515:20:0",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 502,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 497,
                                                "mutability": "mutable",
                                                "name": "from",
                                                "nameLocation": "10544:4:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 505,
                                                "src": "10536:12:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 496,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10536:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 499,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "10558:2:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 505,
                                                "src": "10550:10:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 498,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10550:7:0",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 501,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "10570:6:0",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 505,
                                                "src": "10562:14:0",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 500,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10562:7:0",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10535:42:0"
                                    },
                                    "returnParameters": {
                                        "id": 503,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "10595:0:0"
                                    },
                                    "scope": 506,
                                    "src": "10506:92:0",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 507,
                            "src": "1321:9279:0",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:10568:0"
                },
                "id": 0
            },
            "@openzeppelin/contracts/token/ERC20/IERC20.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                    "exportedSymbols": {
                        "IERC20": [
                            584
                        ]
                    },
                    "id": 585,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 508,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:1"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "IERC20",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 509,
                                "nodeType": "StructuredDocumentation",
                                "src": "58:70:1",
                                "text": " @dev Interface of the ERC20 standard as defined in the EIP."
                            },
                            "fullyImplemented": false,
                            "id": 584,
                            "linearizedBaseContracts": [
                                584
                            ],
                            "name": "IERC20",
                            "nameLocation": "139:6:1",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 510,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "152:66:1",
                                        "text": " @dev Returns the amount of tokens in existence."
                                    },
                                    "functionSelector": "18160ddd",
                                    "id": 515,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "totalSupply",
                                    "nameLocation": "232:11:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 511,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "243:2:1"
                                    },
                                    "returnParameters": {
                                        "id": 514,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 513,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 515,
                                                "src": "269:7:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 512,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "269:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "268:9:1"
                                    },
                                    "scope": 584,
                                    "src": "223:55:1",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 516,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "284:72:1",
                                        "text": " @dev Returns the amount of tokens owned by `account`."
                                    },
                                    "functionSelector": "70a08231",
                                    "id": 523,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "balanceOf",
                                    "nameLocation": "370:9:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 519,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 518,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "388:7:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 523,
                                                "src": "380:15:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 517,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "380:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "379:17:1"
                                    },
                                    "returnParameters": {
                                        "id": 522,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 521,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 523,
                                                "src": "420:7:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 520,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "420:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "419:9:1"
                                    },
                                    "scope": 584,
                                    "src": "361:68:1",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 524,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "435:209:1",
                                        "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                                    },
                                    "functionSelector": "a9059cbb",
                                    "id": 533,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transfer",
                                    "nameLocation": "658:8:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 529,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 526,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "675:9:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 533,
                                                "src": "667:17:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 525,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "667:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 528,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "694:6:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 533,
                                                "src": "686:14:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 527,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "686:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "666:35:1"
                                    },
                                    "returnParameters": {
                                        "id": 532,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 531,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 533,
                                                "src": "720:4:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 530,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "720:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "719:6:1"
                                    },
                                    "scope": 584,
                                    "src": "649:77:1",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 534,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "732:264:1",
                                        "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
                                    },
                                    "functionSelector": "dd62ed3e",
                                    "id": 543,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "allowance",
                                    "nameLocation": "1010:9:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 539,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 536,
                                                "mutability": "mutable",
                                                "name": "owner",
                                                "nameLocation": "1028:5:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 543,
                                                "src": "1020:13:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 535,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1020:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 538,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "1043:7:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 543,
                                                "src": "1035:15:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 537,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1035:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1019:32:1"
                                    },
                                    "returnParameters": {
                                        "id": 542,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 541,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 543,
                                                "src": "1075:7:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 540,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1075:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1074:9:1"
                                    },
                                    "scope": 584,
                                    "src": "1001:83:1",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 544,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1090:642:1",
                                        "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
                                    },
                                    "functionSelector": "095ea7b3",
                                    "id": 553,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "approve",
                                    "nameLocation": "1746:7:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 549,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 546,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "1762:7:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 553,
                                                "src": "1754:15:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 545,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1754:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 548,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "1779:6:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 553,
                                                "src": "1771:14:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 547,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1771:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1753:33:1"
                                    },
                                    "returnParameters": {
                                        "id": 552,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 551,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 553,
                                                "src": "1805:4:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 550,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1805:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1804:6:1"
                                    },
                                    "scope": 584,
                                    "src": "1737:74:1",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 554,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1817:296:1",
                                        "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
                                    },
                                    "functionSelector": "23b872dd",
                                    "id": 565,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "transferFrom",
                                    "nameLocation": "2127:12:1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 561,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 556,
                                                "mutability": "mutable",
                                                "name": "sender",
                                                "nameLocation": "2148:6:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 565,
                                                "src": "2140:14:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 555,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2140:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 558,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "2164:9:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 565,
                                                "src": "2156:17:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 557,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2156:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 560,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "2183:6:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 565,
                                                "src": "2175:14:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 559,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2175:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2139:51:1"
                                    },
                                    "returnParameters": {
                                        "id": 564,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 563,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 565,
                                                "src": "2209:4:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 562,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2209:4:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2208:6:1"
                                    },
                                    "scope": 584,
                                    "src": "2118:97:1",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 566,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2221:158:1",
                                        "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
                                    },
                                    "id": 574,
                                    "name": "Transfer",
                                    "nameLocation": "2390:8:1",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 573,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 568,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "from",
                                                "nameLocation": "2415:4:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 574,
                                                "src": "2399:20:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 567,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2399:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 570,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "2437:2:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 574,
                                                "src": "2421:18:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 569,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2421:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 572,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "2449:5:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 574,
                                                "src": "2441:13:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 571,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2441:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2398:57:1"
                                    },
                                    "src": "2384:72:1"
                                },
                                {
                                    "anonymous": false,
                                    "documentation": {
                                        "id": 575,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2462:148:1",
                                        "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
                                    },
                                    "id": 583,
                                    "name": "Approval",
                                    "nameLocation": "2621:8:1",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 582,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 577,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "owner",
                                                "nameLocation": "2646:5:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 583,
                                                "src": "2630:21:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 576,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2630:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 579,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "2669:7:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 583,
                                                "src": "2653:23:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 578,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2653:7:1",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 581,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "2686:5:1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 583,
                                                "src": "2678:13:1",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 580,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2678:7:1",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2629:63:1"
                                    },
                                    "src": "2615:78:1"
                                }
                            ],
                            "scope": 585,
                            "src": "129:2566:1",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:2663:1"
                },
                "id": 1
            },
            "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
                    "exportedSymbols": {
                        "IERC20": [
                            584
                        ],
                        "IERC20Metadata": [
                            609
                        ]
                    },
                    "id": 610,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 586,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:2"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "../IERC20.sol",
                            "id": 587,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 610,
                            "sourceUnit": 585,
                            "src": "58:23:2",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 589,
                                        "name": "IERC20",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 584,
                                        "src": "228:6:2"
                                    },
                                    "id": 590,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "228:6:2"
                                }
                            ],
                            "canonicalName": "IERC20Metadata",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 588,
                                "nodeType": "StructuredDocumentation",
                                "src": "83:116:2",
                                "text": " @dev Interface for the optional metadata functions from the ERC20 standard.\n _Available since v4.1._"
                            },
                            "fullyImplemented": false,
                            "id": 609,
                            "linearizedBaseContracts": [
                                609,
                                584
                            ],
                            "name": "IERC20Metadata",
                            "nameLocation": "210:14:2",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 591,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "241:54:2",
                                        "text": " @dev Returns the name of the token."
                                    },
                                    "functionSelector": "06fdde03",
                                    "id": 596,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "name",
                                    "nameLocation": "309:4:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 592,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "313:2:2"
                                    },
                                    "returnParameters": {
                                        "id": 595,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 594,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 596,
                                                "src": "339:13:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 593,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "339:6:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "338:15:2"
                                    },
                                    "scope": 609,
                                    "src": "300:54:2",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 597,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "360:56:2",
                                        "text": " @dev Returns the symbol of the token."
                                    },
                                    "functionSelector": "95d89b41",
                                    "id": 602,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "symbol",
                                    "nameLocation": "430:6:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 598,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "436:2:2"
                                    },
                                    "returnParameters": {
                                        "id": 601,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 600,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 602,
                                                "src": "462:13:2",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 599,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "462:6:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "461:15:2"
                                    },
                                    "scope": 609,
                                    "src": "421:56:2",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 603,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "483:65:2",
                                        "text": " @dev Returns the decimals places of the token."
                                    },
                                    "functionSelector": "313ce567",
                                    "id": 608,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "decimals",
                                    "nameLocation": "562:8:2",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 604,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "570:2:2"
                                    },
                                    "returnParameters": {
                                        "id": 607,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 606,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 608,
                                                "src": "596:5:2",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                },
                                                "typeName": {
                                                    "id": 605,
                                                    "name": "uint8",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "596:5:2",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "595:7:2"
                                    },
                                    "scope": 609,
                                    "src": "553:50:2",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 610,
                            "src": "200:405:2",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:573:2"
                },
                "id": 2
            },
            "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                    "exportedSymbols": {
                        "Address": [
                            1129
                        ],
                        "IERC20": [
                            584
                        ],
                        "SafeERC20": [
                            833
                        ]
                    },
                    "id": 834,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 611,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:3"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "../IERC20.sol",
                            "id": 612,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 834,
                            "sourceUnit": 585,
                            "src": "58:23:3",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
                            "file": "../../../utils/Address.sol",
                            "id": 613,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 834,
                            "sourceUnit": 1130,
                            "src": "82:36:3",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "SafeERC20",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 614,
                                "nodeType": "StructuredDocumentation",
                                "src": "120:457:3",
                                "text": " @title SafeERC20\n @dev Wrappers around ERC20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc."
                            },
                            "fullyImplemented": true,
                            "id": 833,
                            "linearizedBaseContracts": [
                                833
                            ],
                            "name": "SafeERC20",
                            "nameLocation": "586:9:3",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 617,
                                    "libraryName": {
                                        "id": 615,
                                        "name": "Address",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1129,
                                        "src": "608:7:3"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "602:26:3",
                                    "typeName": {
                                        "id": 616,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "620:7:3",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                },
                                {
                                    "body": {
                                        "id": 639,
                                        "nodeType": "Block",
                                        "src": "706:103:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 628,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 620,
                                                            "src": "736:5:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 631,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 620,
                                                                            "src": "766:5:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 632,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "transfer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 533,
                                                                        "src": "766:14:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 633,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "766:23:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 634,
                                                                    "name": "to",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 622,
                                                                    "src": "791:2:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 635,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 624,
                                                                    "src": "795:5:3",
                                                                    "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": 629,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "743:3:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 630,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSelector",
                                                                "nodeType": "MemberAccess",
                                                                "src": "743:22:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 636,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "743:58:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 627,
                                                        "name": "_callOptionalReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 832,
                                                        "src": "716:19:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (contract IERC20,bytes memory)"
                                                        }
                                                    },
                                                    "id": 637,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "716:86:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 638,
                                                "nodeType": "ExpressionStatement",
                                                "src": "716:86:3"
                                            }
                                        ]
                                    },
                                    "id": 640,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeTransfer",
                                    "nameLocation": "643:12:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 625,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 620,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "663:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 640,
                                                "src": "656:12:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 619,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 618,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "656:6:3"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "656:6:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 622,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "678:2:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 640,
                                                "src": "670:10:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 621,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "670:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 624,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "690:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 640,
                                                "src": "682:13:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 623,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "682:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "655:41:3"
                                    },
                                    "returnParameters": {
                                        "id": 626,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "706:0:3"
                                    },
                                    "scope": 833,
                                    "src": "634:175:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 665,
                                        "nodeType": "Block",
                                        "src": "905:113:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 653,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 643,
                                                            "src": "935:5:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 656,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 643,
                                                                            "src": "965:5:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 657,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "transferFrom",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 565,
                                                                        "src": "965:18:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 658,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "965:27:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 659,
                                                                    "name": "from",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 645,
                                                                    "src": "994:4:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 660,
                                                                    "name": "to",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 647,
                                                                    "src": "1000:2:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 661,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 649,
                                                                    "src": "1004:5:3",
                                                                    "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": 654,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "942:3:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 655,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSelector",
                                                                "nodeType": "MemberAccess",
                                                                "src": "942:22:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 662,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "942:68:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 652,
                                                        "name": "_callOptionalReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 832,
                                                        "src": "915:19:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (contract IERC20,bytes memory)"
                                                        }
                                                    },
                                                    "id": 663,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "915:96:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 664,
                                                "nodeType": "ExpressionStatement",
                                                "src": "915:96:3"
                                            }
                                        ]
                                    },
                                    "id": 666,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeTransferFrom",
                                    "nameLocation": "824:16:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 650,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 643,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "848:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 666,
                                                "src": "841:12:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 642,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 641,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "841:6:3"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "841:6:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 645,
                                                "mutability": "mutable",
                                                "name": "from",
                                                "nameLocation": "863:4:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 666,
                                                "src": "855:12:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 644,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "855:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 647,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "877:2:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 666,
                                                "src": "869:10:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 646,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "869:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 649,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "889:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 666,
                                                "src": "881:13:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 648,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "881:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "840:55:3"
                                    },
                                    "returnParameters": {
                                        "id": 651,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "905:0:3"
                                    },
                                    "scope": 833,
                                    "src": "815:203:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 709,
                                        "nodeType": "Block",
                                        "src": "1354:537:3",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 693,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 680,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 678,
                                                                            "name": "value",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 674,
                                                                            "src": "1643:5:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "==",
                                                                        "rightExpression": {
                                                                            "hexValue": "30",
                                                                            "id": 679,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1652:1:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        },
                                                                        "src": "1643:10:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 681,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1642:12:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "||",
                                                            "rightExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 691,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 686,
                                                                                            "name": "this",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": -28,
                                                                                            "src": "1683:4:3",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_contract$_SafeERC20_$833",
                                                                                                "typeString": "library SafeERC20"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_contract$_SafeERC20_$833",
                                                                                                "typeString": "library SafeERC20"
                                                                                            }
                                                                                        ],
                                                                                        "id": 685,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                                        "src": "1675:7:3",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                                            "typeString": "type(address)"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 684,
                                                                                            "name": "address",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "1675:7:3",
                                                                                            "typeDescriptions": {}
                                                                                        }
                                                                                    },
                                                                                    "id": 687,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "typeConversion",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "1675:13:3",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                },
                                                                                {
                                                                                    "id": 688,
                                                                                    "name": "spender",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 672,
                                                                                    "src": "1690:7:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    },
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "id": 682,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 670,
                                                                                    "src": "1659:5:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                },
                                                                                "id": 683,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "allowance",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 543,
                                                                                "src": "1659:15:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                                                    "typeString": "function (address,address) view external returns (uint256)"
                                                                                }
                                                                            },
                                                                            "id": 689,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "1659:39:3",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "==",
                                                                        "rightExpression": {
                                                                            "hexValue": "30",
                                                                            "id": 690,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1702:1:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        },
                                                                        "src": "1659:44:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 692,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1658:46:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "1642:62:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365",
                                                            "id": 694,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "1718:56:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                                                            },
                                                            "value": "SafeERC20: approve from non-zero to non-zero allowance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25",
                                                                "typeString": "literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""
                                                            }
                                                        ],
                                                        "id": 677,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "1634:7:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 695,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1634:150:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 696,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1634:150:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 698,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 670,
                                                            "src": "1814:5:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 701,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 670,
                                                                            "src": "1844:5:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 702,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "approve",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 553,
                                                                        "src": "1844:13:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 703,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "1844:22:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 704,
                                                                    "name": "spender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 672,
                                                                    "src": "1868:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 705,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 674,
                                                                    "src": "1877:5:3",
                                                                    "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": 699,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "1821:3:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 700,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSelector",
                                                                "nodeType": "MemberAccess",
                                                                "src": "1821:22:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 706,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1821:62:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 697,
                                                        "name": "_callOptionalReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 832,
                                                        "src": "1794:19:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (contract IERC20,bytes memory)"
                                                        }
                                                    },
                                                    "id": 707,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1794:90:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 708,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1794:90:3"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 667,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1024:249:3",
                                        "text": " @dev Deprecated. This function has issues similar to the ones found in\n {IERC20-approve}, and its usage is discouraged.\n Whenever possible, use {safeIncreaseAllowance} and\n {safeDecreaseAllowance} instead."
                                    },
                                    "id": 710,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeApprove",
                                    "nameLocation": "1287:11:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 675,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 670,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "1306:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 710,
                                                "src": "1299:12:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 669,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 668,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "1299:6:3"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "1299:6:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 672,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "1321:7:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 710,
                                                "src": "1313:15:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 671,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1313:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 674,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "1338:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 710,
                                                "src": "1330:13:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 673,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1330:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1298:46:3"
                                    },
                                    "returnParameters": {
                                        "id": 676,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1354:0:3"
                                    },
                                    "scope": 833,
                                    "src": "1278:613:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 745,
                                        "nodeType": "Block",
                                        "src": "1983:194:3",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    721
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 721,
                                                        "mutability": "mutable",
                                                        "name": "newAllowance",
                                                        "nameLocation": "2001:12:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 745,
                                                        "src": "1993:20:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 720,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "1993:7:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 732,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 731,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "id": 726,
                                                                        "name": "this",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -28,
                                                                        "src": "2040:4:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_SafeERC20_$833",
                                                                            "typeString": "library SafeERC20"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_SafeERC20_$833",
                                                                            "typeString": "library SafeERC20"
                                                                        }
                                                                    ],
                                                                    "id": 725,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "2032:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 724,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "2032:7:3",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 727,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "2032:13:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 728,
                                                                "name": "spender",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 715,
                                                                "src": "2047:7:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 722,
                                                                "name": "token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 713,
                                                                "src": "2016:5:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 723,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "allowance",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 543,
                                                            "src": "2016:15:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                                "typeString": "function (address,address) view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 729,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "2016:39:3",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 730,
                                                        "name": "value",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 717,
                                                        "src": "2058:5:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2016:47:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "1993:70:3"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 734,
                                                            "name": "token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 713,
                                                            "src": "2093:5:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 737,
                                                                            "name": "token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 713,
                                                                            "src": "2123:5:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        },
                                                                        "id": 738,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "approve",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 553,
                                                                        "src": "2123:13:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                            "typeString": "function (address,uint256) external returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 739,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "selector",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "2123:22:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes4",
                                                                        "typeString": "bytes4"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 740,
                                                                    "name": "spender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 715,
                                                                    "src": "2147:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 741,
                                                                    "name": "newAllowance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 721,
                                                                    "src": "2156:12:3",
                                                                    "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": 735,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "2100:3:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 736,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encodeWithSelector",
                                                                "nodeType": "MemberAccess",
                                                                "src": "2100:22:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 742,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2100:69:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 733,
                                                        "name": "_callOptionalReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 832,
                                                        "src": "2073:19:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_bytes_memory_ptr_$returns$__$",
                                                            "typeString": "function (contract IERC20,bytes memory)"
                                                        }
                                                    },
                                                    "id": 743,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2073:97:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 744,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2073:97:3"
                                            }
                                        ]
                                    },
                                    "id": 746,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeIncreaseAllowance",
                                    "nameLocation": "1906:21:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 718,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 713,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "1935:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 746,
                                                "src": "1928:12:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 712,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 711,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "1928:6:3"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "1928:6:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 715,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "1950:7:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 746,
                                                "src": "1942:15:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 714,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1942:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 717,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "1967:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 746,
                                                "src": "1959:13:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 716,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1959:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1927:46:3"
                                    },
                                    "returnParameters": {
                                        "id": 719,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1983:0:3"
                                    },
                                    "scope": 833,
                                    "src": "1897:280:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 793,
                                        "nodeType": "Block",
                                        "src": "2269:370:3",
                                        "statements": [
                                            {
                                                "id": 792,
                                                "nodeType": "UncheckedBlock",
                                                "src": "2279:354:3",
                                                "statements": [
                                                    {
                                                        "assignments": [
                                                            757
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 757,
                                                                "mutability": "mutable",
                                                                "name": "oldAllowance",
                                                                "nameLocation": "2311:12:3",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 792,
                                                                "src": "2303:20:3",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 756,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "2303:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 766,
                                                        "initialValue": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 762,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "2350:4:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_SafeERC20_$833",
                                                                                "typeString": "library SafeERC20"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_SafeERC20_$833",
                                                                                "typeString": "library SafeERC20"
                                                                            }
                                                                        ],
                                                                        "id": 761,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "2342:7:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 760,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "2342:7:3",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 763,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2342:13:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 764,
                                                                    "name": "spender",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 751,
                                                                    "src": "2357:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 758,
                                                                    "name": "token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 749,
                                                                    "src": "2326:5:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                },
                                                                "id": 759,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "allowance",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 543,
                                                                "src": "2326:15:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$",
                                                                    "typeString": "function (address,address) view external returns (uint256)"
                                                                }
                                                            },
                                                            "id": 765,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2326:39:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "2303:62:3"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 770,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 768,
                                                                        "name": "oldAllowance",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 757,
                                                                        "src": "2387:12:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">=",
                                                                    "rightExpression": {
                                                                        "id": 769,
                                                                        "name": "value",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 753,
                                                                        "src": "2403:5:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2387:21:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "hexValue": "5361666545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f",
                                                                    "id": 771,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "string",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2410:43:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                                                                        "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                                                                    },
                                                                    "value": "SafeERC20: decreased allowance below zero"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_stringliteral_2c3af60974a758b7e72e108c9bf0943ecc9e4f2e8af4695da5f52fbf57a63d3a",
                                                                        "typeString": "literal_string \"SafeERC20: decreased allowance below zero\""
                                                                    }
                                                                ],
                                                                "id": 767,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [
                                                                    -18,
                                                                    -18
                                                                ],
                                                                "referencedDeclaration": -18,
                                                                "src": "2379:7:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 772,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2379:75:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 773,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "2379:75:3"
                                                    },
                                                    {
                                                        "assignments": [
                                                            775
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 775,
                                                                "mutability": "mutable",
                                                                "name": "newAllowance",
                                                                "nameLocation": "2476:12:3",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 792,
                                                                "src": "2468:20:3",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 774,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "2468:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 779,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 778,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 776,
                                                                "name": "oldAllowance",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 757,
                                                                "src": "2491:12:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 777,
                                                                "name": "value",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 753,
                                                                "src": "2506:5:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2491:20:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "2468:43:3"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 781,
                                                                    "name": "token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 749,
                                                                    "src": "2545:5:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "expression": {
                                                                                "expression": {
                                                                                    "id": 784,
                                                                                    "name": "token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 749,
                                                                                    "src": "2575:5:3",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                },
                                                                                "id": 785,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "approve",
                                                                                "nodeType": "MemberAccess",
                                                                                "referencedDeclaration": 553,
                                                                                "src": "2575:13:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                                                    "typeString": "function (address,uint256) external returns (bool)"
                                                                                }
                                                                            },
                                                                            "id": 786,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "selector",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "2575:22:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes4",
                                                                                "typeString": "bytes4"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 787,
                                                                            "name": "spender",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 751,
                                                                            "src": "2599:7:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 788,
                                                                            "name": "newAllowance",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 775,
                                                                            "src": "2608:12:3",
                                                                            "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": 782,
                                                                            "name": "abi",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -1,
                                                                            "src": "2552:3:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_abi",
                                                                                "typeString": "abi"
                                                                            }
                                                                        },
                                                                        "id": 783,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "encodeWithSelector",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "2552:22:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                                                            "typeString": "function (bytes4) pure returns (bytes memory)"
                                                                        }
                                                                    },
                                                                    "id": 789,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2552:69:3",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                ],
                                                                "id": 780,
                                                                "name": "_callOptionalReturn",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 832,
                                                                "src": "2525:19:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_bytes_memory_ptr_$returns$__$",
                                                                    "typeString": "function (contract IERC20,bytes memory)"
                                                                }
                                                            },
                                                            "id": 790,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2525:97:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 791,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "2525:97:3"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "id": 794,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "safeDecreaseAllowance",
                                    "nameLocation": "2192:21:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 754,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 749,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "2221:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 794,
                                                "src": "2214:12:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 748,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 747,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "2214:6:3"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "2214:6:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 751,
                                                "mutability": "mutable",
                                                "name": "spender",
                                                "nameLocation": "2236:7:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 794,
                                                "src": "2228:15:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 750,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2228:7:3",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 753,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "2253:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 794,
                                                "src": "2245:13:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 752,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2245:7:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2213:46:3"
                                    },
                                    "returnParameters": {
                                        "id": 755,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2269:0:3"
                                    },
                                    "scope": 833,
                                    "src": "2183:456:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 831,
                                        "nodeType": "Block",
                                        "src": "3092:681:3",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    804
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 804,
                                                        "mutability": "mutable",
                                                        "name": "returndata",
                                                        "nameLocation": "3454:10:3",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 831,
                                                        "src": "3441:23:3",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 803,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3441:5:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 813,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 810,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 800,
                                                            "src": "3495:4:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564",
                                                            "id": 811,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3501:34:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                                                            },
                                                            "value": "SafeERC20: low-level call failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b",
                                                                "typeString": "literal_string \"SafeERC20: low-level call failed\""
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 807,
                                                                    "name": "token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 798,
                                                                    "src": "3475:5:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                ],
                                                                "id": 806,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3467:7:3",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 805,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3467:7:3",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 808,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3467:14:3",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 809,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "functionCall",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 924,
                                                        "src": "3467:27:3",
                                                        "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": 812,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3467:69:3",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3441:95:3"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 817,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 814,
                                                            "name": "returndata",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 804,
                                                            "src": "3550:10:3",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 815,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "3550:17:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 816,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3570:1:3",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "3550:21:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 830,
                                                "nodeType": "IfStatement",
                                                "src": "3546:221:3",
                                                "trueBody": {
                                                    "id": 829,
                                                    "nodeType": "Block",
                                                    "src": "3573:194:3",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 821,
                                                                                "name": "returndata",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 804,
                                                                                "src": "3690:10:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                                    "typeString": "bytes memory"
                                                                                }
                                                                            },
                                                                            {
                                                                                "components": [
                                                                                    {
                                                                                        "id": 823,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                                        "src": "3703:4:3",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_type$_t_bool_$",
                                                                                            "typeString": "type(bool)"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 822,
                                                                                            "name": "bool",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "3703:4:3",
                                                                                            "typeDescriptions": {}
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 824,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "3702:6:3",
                                                                                "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": 819,
                                                                                "name": "abi",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -1,
                                                                                "src": "3679:3:3",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_magic_abi",
                                                                                    "typeString": "abi"
                                                                                }
                                                                            },
                                                                            "id": 820,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "memberName": "decode",
                                                                            "nodeType": "MemberAccess",
                                                                            "src": "3679:10:3",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                                                                "typeString": "function () pure"
                                                                            }
                                                                        },
                                                                        "id": 825,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "3679:30:3",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564",
                                                                        "id": 826,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "3711:44:3",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                                                            "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                                                        },
                                                                        "value": "SafeERC20: ERC20 operation did not succeed"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd",
                                                                            "typeString": "literal_string \"SafeERC20: ERC20 operation did not succeed\""
                                                                        }
                                                                    ],
                                                                    "id": 818,
                                                                    "name": "require",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [
                                                                        -18,
                                                                        -18
                                                                    ],
                                                                    "referencedDeclaration": -18,
                                                                    "src": "3671:7:3",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                        "typeString": "function (bool,string memory) pure"
                                                                    }
                                                                },
                                                                "id": 827,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "3671:85:3",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 828,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3671:85:3"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 795,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2645:372:3",
                                        "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants)."
                                    },
                                    "id": 832,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_callOptionalReturn",
                                    "nameLocation": "3031:19:3",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 801,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 798,
                                                "mutability": "mutable",
                                                "name": "token",
                                                "nameLocation": "3058:5:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 832,
                                                "src": "3051:12:3",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 797,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 796,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "3051:6:3"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "3051:6:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 800,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "3078:4:3",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 832,
                                                "src": "3065:17:3",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 799,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3065:5:3",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3050:33:3"
                                    },
                                    "returnParameters": {
                                        "id": 802,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "3092:0:3"
                                    },
                                    "scope": 833,
                                    "src": "3022:751:3",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                }
                            ],
                            "scope": 834,
                            "src": "578:3197:3",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:3743:3"
                },
                "id": 3
            },
            "@openzeppelin/contracts/utils/Address.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
                    "exportedSymbols": {
                        "Address": [
                            1129
                        ]
                    },
                    "id": 1130,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 835,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:4"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Address",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 836,
                                "nodeType": "StructuredDocumentation",
                                "src": "58:67:4",
                                "text": " @dev Collection of functions related to the address type"
                            },
                            "fullyImplemented": true,
                            "id": 1129,
                            "linearizedBaseContracts": [
                                1129
                            ],
                            "name": "Address",
                            "nameLocation": "134:7:4",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 852,
                                        "nodeType": "Block",
                                        "src": "784:347:4",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    845
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 845,
                                                        "mutability": "mutable",
                                                        "name": "size",
                                                        "nameLocation": "989:4:4",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 852,
                                                        "src": "981:12:4",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 844,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "981:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 846,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "981:12:4"
                                            },
                                            {
                                                "AST": {
                                                    "nodeType": "YulBlock",
                                                    "src": "1068:32:4",
                                                    "statements": [
                                                        {
                                                            "nodeType": "YulAssignment",
                                                            "src": "1070:28:4",
                                                            "value": {
                                                                "arguments": [
                                                                    {
                                                                        "name": "account",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "1090:7:4"
                                                                    }
                                                                ],
                                                                "functionName": {
                                                                    "name": "extcodesize",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1078:11:4"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "1078:20:4"
                                                            },
                                                            "variableNames": [
                                                                {
                                                                    "name": "size",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "1070:4:4"
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "evmVersion": "london",
                                                "externalReferences": [
                                                    {
                                                        "declaration": 839,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "1090:7:4",
                                                        "valueSize": 1
                                                    },
                                                    {
                                                        "declaration": 845,
                                                        "isOffset": false,
                                                        "isSlot": false,
                                                        "src": "1070:4:4",
                                                        "valueSize": 1
                                                    }
                                                ],
                                                "id": 847,
                                                "nodeType": "InlineAssembly",
                                                "src": "1059:41:4"
                                            },
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 850,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 848,
                                                        "name": "size",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 845,
                                                        "src": "1116:4:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 849,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "1123:1:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "1116:8:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 843,
                                                "id": 851,
                                                "nodeType": "Return",
                                                "src": "1109:15:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 837,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "148:565:4",
                                        "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n ===="
                                    },
                                    "id": 853,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isContract",
                                    "nameLocation": "727:10:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 840,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 839,
                                                "mutability": "mutable",
                                                "name": "account",
                                                "nameLocation": "746:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 853,
                                                "src": "738:15:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 838,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "738:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "737:17:4"
                                    },
                                    "returnParameters": {
                                        "id": 843,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 842,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 853,
                                                "src": "778:4:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 841,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "778:4:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "777:6:4"
                                    },
                                    "scope": 1129,
                                    "src": "718:413:4",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 886,
                                        "nodeType": "Block",
                                        "src": "2119:320:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 868,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 864,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "2145:4:4",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Address_$1129",
                                                                                "typeString": "library Address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Address_$1129",
                                                                                "typeString": "library Address"
                                                                            }
                                                                        ],
                                                                        "id": 863,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "2137:7:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 862,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "2137:7:4",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 865,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "2137:13:4",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "id": 866,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "balance",
                                                                "nodeType": "MemberAccess",
                                                                "src": "2137:21:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 867,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 858,
                                                                "src": "2162:6:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2137:31:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365",
                                                            "id": 869,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2170:31:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                                                "typeString": "literal_string \"Address: insufficient balance\""
                                                            },
                                                            "value": "Address: insufficient balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9",
                                                                "typeString": "literal_string \"Address: insufficient balance\""
                                                            }
                                                        ],
                                                        "id": 861,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2129:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 870,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2129:73:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 871,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2129:73:4"
                                            },
                                            {
                                                "assignments": [
                                                    873,
                                                    null
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 873,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "2296:7:4",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 886,
                                                        "src": "2291:12:4",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 872,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "2291:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    null
                                                ],
                                                "id": 880,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "",
                                                            "id": 878,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2341:2:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            },
                                                            "value": ""
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                    "typeString": "literal_string \"\""
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 874,
                                                                "name": "recipient",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 856,
                                                                "src": "2309:9:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            },
                                                            "id": 875,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "call",
                                                            "nodeType": "MemberAccess",
                                                            "src": "2309:14:4",
                                                            "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": 877,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "value"
                                                        ],
                                                        "nodeType": "FunctionCallOptions",
                                                        "options": [
                                                            {
                                                                "id": 876,
                                                                "name": "amount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 858,
                                                                "src": "2332:6:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "src": "2309:31:4",
                                                        "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": 879,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2309:35:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2290:54:4"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 882,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 873,
                                                            "src": "2362:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564",
                                                            "id": 883,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2371:60:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                                                            },
                                                            "value": "Address: unable to send value, recipient may have reverted"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae",
                                                                "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\""
                                                            }
                                                        ],
                                                        "id": 881,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2354:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 884,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2354:78:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 885,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2354:78:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 854,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1137:906:4",
                                        "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."
                                    },
                                    "id": 887,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sendValue",
                                    "nameLocation": "2057:9:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 859,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 856,
                                                "mutability": "mutable",
                                                "name": "recipient",
                                                "nameLocation": "2083:9:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 887,
                                                "src": "2067:25:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                "typeName": {
                                                    "id": 855,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2067:15:4",
                                                    "stateMutability": "payable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 858,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "2102:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 887,
                                                "src": "2094:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 857,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2094:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2066:43:4"
                                    },
                                    "returnParameters": {
                                        "id": 860,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2119:0:4"
                                    },
                                    "scope": 1129,
                                    "src": "2048:391:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 903,
                                        "nodeType": "Block",
                                        "src": "3269:82:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 898,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 890,
                                                            "src": "3297:6:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 899,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 892,
                                                            "src": "3305:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564",
                                                            "id": 900,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3311:32:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                                                "typeString": "literal_string \"Address: low-level call failed\""
                                                            },
                                                            "value": "Address: low-level call failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df",
                                                                "typeString": "literal_string \"Address: low-level call failed\""
                                                            }
                                                        ],
                                                        "id": 897,
                                                        "name": "functionCall",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            904,
                                                            924
                                                        ],
                                                        "referencedDeclaration": 924,
                                                        "src": "3284:12:4",
                                                        "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": 901,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3284:60:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 896,
                                                "id": 902,
                                                "nodeType": "Return",
                                                "src": "3277:67:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 888,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2445:730:4",
                                        "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"
                                    },
                                    "id": 904,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionCall",
                                    "nameLocation": "3189:12:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 893,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 890,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "3210:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 904,
                                                "src": "3202:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 889,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3202:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 892,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "3231:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 904,
                                                "src": "3218:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 891,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3218:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3201:35:4"
                                    },
                                    "returnParameters": {
                                        "id": 896,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 895,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 904,
                                                "src": "3255:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 894,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3255:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3254:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "3180:171:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 923,
                                        "nodeType": "Block",
                                        "src": "3690:76:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 917,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 907,
                                                            "src": "3729:6:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 918,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 909,
                                                            "src": "3737:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 919,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3743:1:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "id": 920,
                                                            "name": "errorMessage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 911,
                                                            "src": "3746:12:4",
                                                            "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": 916,
                                                        "name": "functionCallWithValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            944,
                                                            994
                                                        ],
                                                        "referencedDeclaration": 994,
                                                        "src": "3707:21:4",
                                                        "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": 921,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3707:52:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 915,
                                                "id": 922,
                                                "nodeType": "Return",
                                                "src": "3700:59:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 905,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3357:211:4",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                                    },
                                    "id": 924,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionCall",
                                    "nameLocation": "3582:12:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 912,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 907,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "3603:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 924,
                                                "src": "3595:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 906,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3595:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 909,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "3624:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 924,
                                                "src": "3611:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 908,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3611:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 911,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "3644:12:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 924,
                                                "src": "3630:26:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 910,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3630:6:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3594:63:4"
                                    },
                                    "returnParameters": {
                                        "id": 915,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 914,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 924,
                                                "src": "3676:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 913,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3676:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3675:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "3573:193:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 943,
                                        "nodeType": "Block",
                                        "src": "4241:111:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 937,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 927,
                                                            "src": "4280:6:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 938,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 929,
                                                            "src": "4288:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 939,
                                                            "name": "value",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 931,
                                                            "src": "4294:5:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564",
                                                            "id": 940,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4301:43:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                                                "typeString": "literal_string \"Address: low-level call with value failed\""
                                                            },
                                                            "value": "Address: low-level call with value failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc",
                                                                "typeString": "literal_string \"Address: low-level call with value failed\""
                                                            }
                                                        ],
                                                        "id": 936,
                                                        "name": "functionCallWithValue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            944,
                                                            994
                                                        ],
                                                        "referencedDeclaration": 994,
                                                        "src": "4258:21:4",
                                                        "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": 941,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4258:87:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 935,
                                                "id": 942,
                                                "nodeType": "Return",
                                                "src": "4251:94:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 925,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3772:351:4",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"
                                    },
                                    "id": 944,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionCallWithValue",
                                    "nameLocation": "4137:21:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 932,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 927,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "4167:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 944,
                                                "src": "4159:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 926,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4159:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 929,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "4188:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 944,
                                                "src": "4175:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 928,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4175:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 931,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "4202:5:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 944,
                                                "src": "4194:13:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 930,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4194:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4158:50:4"
                                    },
                                    "returnParameters": {
                                        "id": 935,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 934,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 944,
                                                "src": "4227:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 933,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4227:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4226:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "4128:224:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 993,
                                        "nodeType": "Block",
                                        "src": "4741:382:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 965,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 961,
                                                                            "name": "this",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -28,
                                                                            "src": "4767:4:4",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_Address_$1129",
                                                                                "typeString": "library Address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_Address_$1129",
                                                                                "typeString": "library Address"
                                                                            }
                                                                        ],
                                                                        "id": 960,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "4759:7:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 959,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "4759:7:4",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 962,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "4759:13:4",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "id": 963,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "balance",
                                                                "nodeType": "MemberAccess",
                                                                "src": "4759:21:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "id": 964,
                                                                "name": "value",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 951,
                                                                "src": "4784:5:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "4759:30:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c",
                                                            "id": 966,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4791:40:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                                                "typeString": "literal_string \"Address: insufficient balance for call\""
                                                            },
                                                            "value": "Address: insufficient balance for call"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c",
                                                                "typeString": "literal_string \"Address: insufficient balance for call\""
                                                            }
                                                        ],
                                                        "id": 958,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4751:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 967,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4751:81:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 968,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4751:81:4"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 971,
                                                                    "name": "target",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 947,
                                                                    "src": "4861:6:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 970,
                                                                "name": "isContract",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 853,
                                                                "src": "4850:10:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 972,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4850:18:4",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374",
                                                            "id": 973,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "4870:31:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                                                "typeString": "literal_string \"Address: call to non-contract\""
                                                            },
                                                            "value": "Address: call to non-contract"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad",
                                                                "typeString": "literal_string \"Address: call to non-contract\""
                                                            }
                                                        ],
                                                        "id": 969,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "4842:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 974,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4842:60:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 975,
                                                "nodeType": "ExpressionStatement",
                                                "src": "4842:60:4"
                                            },
                                            {
                                                "assignments": [
                                                    977,
                                                    979
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 977,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "4978:7:4",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 993,
                                                        "src": "4973:12:4",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 976,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4973:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    {
                                                        "constant": false,
                                                        "id": 979,
                                                        "mutability": "mutable",
                                                        "name": "returndata",
                                                        "nameLocation": "5000:10:4",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 993,
                                                        "src": "4987:23:4",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 978,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4987:5:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 986,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 984,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 949,
                                                            "src": "5042:4:4",
                                                            "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": 980,
                                                                "name": "target",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 947,
                                                                "src": "5014:6:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "id": 981,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "call",
                                                            "nodeType": "MemberAccess",
                                                            "src": "5014:11:4",
                                                            "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": 983,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "names": [
                                                            "value"
                                                        ],
                                                        "nodeType": "FunctionCallOptions",
                                                        "options": [
                                                            {
                                                                "id": 982,
                                                                "name": "value",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 951,
                                                                "src": "5034:5:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "src": "5014:27:4",
                                                        "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": 985,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5014:33:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4972:75:4"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 988,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 977,
                                                            "src": "5082:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "id": 989,
                                                            "name": "returndata",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 979,
                                                            "src": "5091:10:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 990,
                                                            "name": "errorMessage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 953,
                                                            "src": "5103:12:4",
                                                            "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": 987,
                                                        "name": "_verifyCallResult",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1128,
                                                        "src": "5064:17:4",
                                                        "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": 991,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5064:52:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 957,
                                                "id": 992,
                                                "nodeType": "Return",
                                                "src": "5057:59:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 945,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4358:237:4",
                                        "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"
                                    },
                                    "id": 994,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionCallWithValue",
                                    "nameLocation": "4609:21:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 954,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 947,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "4639:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 994,
                                                "src": "4631:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 946,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4631:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 949,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "4660:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 994,
                                                "src": "4647:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 948,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4647:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 951,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "4674:5:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 994,
                                                "src": "4666:13:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 950,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4666:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 953,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "4695:12:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 994,
                                                "src": "4681:26:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 952,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4681:6:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4630:78:4"
                                    },
                                    "returnParameters": {
                                        "id": 957,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 956,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 994,
                                                "src": "4727:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 955,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4727:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4726:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "4600:523:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1010,
                                        "nodeType": "Block",
                                        "src": "5400:97:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1005,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 997,
                                                            "src": "5436:6:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1006,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 999,
                                                            "src": "5444:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564",
                                                            "id": 1007,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5450:39:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                                                "typeString": "literal_string \"Address: low-level static call failed\""
                                                            },
                                                            "value": "Address: low-level static call failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0",
                                                                "typeString": "literal_string \"Address: low-level static call failed\""
                                                            }
                                                        ],
                                                        "id": 1004,
                                                        "name": "functionStaticCall",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            1011,
                                                            1046
                                                        ],
                                                        "referencedDeclaration": 1046,
                                                        "src": "5417:18:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1008,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5417:73:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1003,
                                                "id": 1009,
                                                "nodeType": "Return",
                                                "src": "5410:80:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 995,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5129:166:4",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                                    },
                                    "id": 1011,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionStaticCall",
                                    "nameLocation": "5309:18:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1000,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 997,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "5336:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1011,
                                                "src": "5328:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 996,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5328:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 999,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "5357:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1011,
                                                "src": "5344:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 998,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5344:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5327:35:4"
                                    },
                                    "returnParameters": {
                                        "id": 1003,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1002,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1011,
                                                "src": "5386:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1001,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5386:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5385:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "5300:197:4",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1045,
                                        "nodeType": "Block",
                                        "src": "5809:288:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1025,
                                                                    "name": "target",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1014,
                                                                    "src": "5838:6:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1024,
                                                                "name": "isContract",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 853,
                                                                "src": "5827:10:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 1026,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5827:18:4",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374",
                                                            "id": 1027,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "5847:38:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                                                "typeString": "literal_string \"Address: static call to non-contract\""
                                                            },
                                                            "value": "Address: static call to non-contract"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9",
                                                                "typeString": "literal_string \"Address: static call to non-contract\""
                                                            }
                                                        ],
                                                        "id": 1023,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "5819:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1028,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5819:67:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1029,
                                                "nodeType": "ExpressionStatement",
                                                "src": "5819:67:4"
                                            },
                                            {
                                                "assignments": [
                                                    1031,
                                                    1033
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1031,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "5962:7:4",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1045,
                                                        "src": "5957:12:4",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 1030,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5957:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    {
                                                        "constant": false,
                                                        "id": 1033,
                                                        "mutability": "mutable",
                                                        "name": "returndata",
                                                        "nameLocation": "5984:10:4",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1045,
                                                        "src": "5971:23:4",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1032,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5971:5:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1038,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1036,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1016,
                                                            "src": "6016:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1034,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1014,
                                                            "src": "5998:6:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 1035,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "staticcall",
                                                        "nodeType": "MemberAccess",
                                                        "src": "5998:17:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1037,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5998:23:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5956:65:4"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1040,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1031,
                                                            "src": "6056:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "id": 1041,
                                                            "name": "returndata",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1033,
                                                            "src": "6065:10:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1042,
                                                            "name": "errorMessage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1018,
                                                            "src": "6077:12:4",
                                                            "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": 1039,
                                                        "name": "_verifyCallResult",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1128,
                                                        "src": "6038:17:4",
                                                        "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": 1043,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6038:52:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1022,
                                                "id": 1044,
                                                "nodeType": "Return",
                                                "src": "6031:59:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1012,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5503:173:4",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"
                                    },
                                    "id": 1046,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionStaticCall",
                                    "nameLocation": "5690:18:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1019,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1014,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "5717:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1046,
                                                "src": "5709:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1013,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5709:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1016,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "5738:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1046,
                                                "src": "5725:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1015,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5725:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1018,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "5758:12:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1046,
                                                "src": "5744:26:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1017,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5744:6:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5708:63:4"
                                    },
                                    "returnParameters": {
                                        "id": 1022,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1021,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1046,
                                                "src": "5795:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1020,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5795:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5794:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "5681:416:4",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1062,
                                        "nodeType": "Block",
                                        "src": "6373:101:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1057,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1049,
                                                            "src": "6411:6:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 1058,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1051,
                                                            "src": "6419:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
                                                            "id": 1059,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6425:41:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                                                            },
                                                            "value": "Address: low-level delegate call failed"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398",
                                                                "typeString": "literal_string \"Address: low-level delegate call failed\""
                                                            }
                                                        ],
                                                        "id": 1056,
                                                        "name": "functionDelegateCall",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            1063,
                                                            1098
                                                        ],
                                                        "referencedDeclaration": 1098,
                                                        "src": "6390:20:4",
                                                        "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": 1060,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6390:77:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1055,
                                                "id": 1061,
                                                "nodeType": "Return",
                                                "src": "6383:84:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1047,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6103:168:4",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                                    },
                                    "id": 1063,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionDelegateCall",
                                    "nameLocation": "6285:20:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1052,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1049,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "6314:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1063,
                                                "src": "6306:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1048,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6306:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1051,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "6335:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1063,
                                                "src": "6322:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1050,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6322:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6305:35:4"
                                    },
                                    "returnParameters": {
                                        "id": 1055,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1054,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1063,
                                                "src": "6359:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1053,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6359:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6358:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "6276:198:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1097,
                                        "nodeType": "Block",
                                        "src": "6785:292:4",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1077,
                                                                    "name": "target",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1066,
                                                                    "src": "6814:6:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1076,
                                                                "name": "isContract",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 853,
                                                                "src": "6803:10:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                                    "typeString": "function (address) view returns (bool)"
                                                                }
                                                            },
                                                            "id": 1078,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6803:18:4",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374",
                                                            "id": 1079,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "6823:40:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                                                            },
                                                            "value": "Address: delegate call to non-contract"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520",
                                                                "typeString": "literal_string \"Address: delegate call to non-contract\""
                                                            }
                                                        ],
                                                        "id": 1075,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "6795:7:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 1080,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6795:69:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 1081,
                                                "nodeType": "ExpressionStatement",
                                                "src": "6795:69:4"
                                            },
                                            {
                                                "assignments": [
                                                    1083,
                                                    1085
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1083,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "6940:7:4",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1097,
                                                        "src": "6935:12:4",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 1082,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6935:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    },
                                                    {
                                                        "constant": false,
                                                        "id": 1085,
                                                        "mutability": "mutable",
                                                        "name": "returndata",
                                                        "nameLocation": "6962:10:4",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1097,
                                                        "src": "6949:23:4",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1084,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6949:5:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1090,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1088,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1068,
                                                            "src": "6996:4:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1086,
                                                            "name": "target",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1066,
                                                            "src": "6976:6:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 1087,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "delegatecall",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6976:19:4",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                                        }
                                                    },
                                                    "id": 1089,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6976:25:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                        "typeString": "tuple(bool,bytes memory)"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6934:67:4"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1092,
                                                            "name": "success",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1083,
                                                            "src": "7036:7:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "id": 1093,
                                                            "name": "returndata",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1085,
                                                            "src": "7045:10:4",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1094,
                                                            "name": "errorMessage",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1070,
                                                            "src": "7057:12:4",
                                                            "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": 1091,
                                                        "name": "_verifyCallResult",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1128,
                                                        "src": "7018:17:4",
                                                        "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": 1095,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7018:52:4",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1074,
                                                "id": 1096,
                                                "nodeType": "Return",
                                                "src": "7011:59:4"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1064,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6480:175:4",
                                        "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"
                                    },
                                    "id": 1098,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "functionDelegateCall",
                                    "nameLocation": "6669:20:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1071,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1066,
                                                "mutability": "mutable",
                                                "name": "target",
                                                "nameLocation": "6698:6:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1098,
                                                "src": "6690:14:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1065,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6690:7:4",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1068,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "6719:4:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1098,
                                                "src": "6706:17:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1067,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6706:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1070,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "6739:12:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1098,
                                                "src": "6725:26:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1069,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6725:6:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6689:63:4"
                                    },
                                    "returnParameters": {
                                        "id": 1074,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1073,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1098,
                                                "src": "6771:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1072,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6771:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6770:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "6660:417:4",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1127,
                                        "nodeType": "Block",
                                        "src": "7212:596:4",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "id": 1109,
                                                    "name": "success",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1100,
                                                    "src": "7226:7:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 1125,
                                                    "nodeType": "Block",
                                                    "src": "7283:519:4",
                                                    "statements": [
                                                        {
                                                            "condition": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1116,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 1113,
                                                                        "name": "returndata",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1102,
                                                                        "src": "7367:10:4",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 1114,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7367:17:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": ">",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 1115,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "7387:1:4",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "7367:21:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "falseBody": {
                                                                "id": 1123,
                                                                "nodeType": "Block",
                                                                "src": "7739:53:4",
                                                                "statements": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1120,
                                                                                    "name": "errorMessage",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1104,
                                                                                    "src": "7764:12:4",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                    }
                                                                                ],
                                                                                "id": 1119,
                                                                                "name": "revert",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [
                                                                                    -19,
                                                                                    -19
                                                                                ],
                                                                                "referencedDeclaration": -19,
                                                                                "src": "7757:6:4",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                                                    "typeString": "function (string memory) pure"
                                                                                }
                                                                            },
                                                                            "id": 1121,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "7757:20:4",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 1122,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "7757:20:4"
                                                                    }
                                                                ]
                                                            },
                                                            "id": 1124,
                                                            "nodeType": "IfStatement",
                                                            "src": "7363:429:4",
                                                            "trueBody": {
                                                                "id": 1118,
                                                                "nodeType": "Block",
                                                                "src": "7390:343:4",
                                                                "statements": [
                                                                    {
                                                                        "AST": {
                                                                            "nodeType": "YulBlock",
                                                                            "src": "7574:145:4",
                                                                            "statements": [
                                                                                {
                                                                                    "nodeType": "YulVariableDeclaration",
                                                                                    "src": "7596:40:4",
                                                                                    "value": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "returndata",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "7625:10:4"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "mload",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "7619:5:4"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "7619:17:4"
                                                                                    },
                                                                                    "variables": [
                                                                                        {
                                                                                            "name": "returndata_size",
                                                                                            "nodeType": "YulTypedName",
                                                                                            "src": "7600:15:4",
                                                                                            "type": ""
                                                                                        }
                                                                                    ]
                                                                                },
                                                                                {
                                                                                    "expression": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "arguments": [
                                                                                                    {
                                                                                                        "kind": "number",
                                                                                                        "nodeType": "YulLiteral",
                                                                                                        "src": "7668:2:4",
                                                                                                        "type": "",
                                                                                                        "value": "32"
                                                                                                    },
                                                                                                    {
                                                                                                        "name": "returndata",
                                                                                                        "nodeType": "YulIdentifier",
                                                                                                        "src": "7672:10:4"
                                                                                                    }
                                                                                                ],
                                                                                                "functionName": {
                                                                                                    "name": "add",
                                                                                                    "nodeType": "YulIdentifier",
                                                                                                    "src": "7664:3:4"
                                                                                                },
                                                                                                "nodeType": "YulFunctionCall",
                                                                                                "src": "7664:19:4"
                                                                                            },
                                                                                            {
                                                                                                "name": "returndata_size",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "7685:15:4"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "revert",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "7657:6:4"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "7657:44:4"
                                                                                    },
                                                                                    "nodeType": "YulExpressionStatement",
                                                                                    "src": "7657:44:4"
                                                                                }
                                                                            ]
                                                                        },
                                                                        "evmVersion": "london",
                                                                        "externalReferences": [
                                                                            {
                                                                                "declaration": 1102,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "7625:10:4",
                                                                                "valueSize": 1
                                                                            },
                                                                            {
                                                                                "declaration": 1102,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "7672:10:4",
                                                                                "valueSize": 1
                                                                            }
                                                                        ],
                                                                        "id": 1117,
                                                                        "nodeType": "InlineAssembly",
                                                                        "src": "7565:154:4"
                                                                    }
                                                                ]
                                                            }
                                                        }
                                                    ]
                                                },
                                                "id": 1126,
                                                "nodeType": "IfStatement",
                                                "src": "7222:580:4",
                                                "trueBody": {
                                                    "id": 1112,
                                                    "nodeType": "Block",
                                                    "src": "7235:42:4",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1110,
                                                                "name": "returndata",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1102,
                                                                "src": "7256:10:4",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1108,
                                                            "id": 1111,
                                                            "nodeType": "Return",
                                                            "src": "7249:17:4"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "id": 1128,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_verifyCallResult",
                                    "nameLocation": "7092:17:4",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1105,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1100,
                                                "mutability": "mutable",
                                                "name": "success",
                                                "nameLocation": "7115:7:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1128,
                                                "src": "7110:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1099,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7110:4:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1102,
                                                "mutability": "mutable",
                                                "name": "returndata",
                                                "nameLocation": "7137:10:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1128,
                                                "src": "7124:23:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1101,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7124:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1104,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "7163:12:4",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1128,
                                                "src": "7149:26:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1103,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7149:6:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7109:67:4"
                                    },
                                    "returnParameters": {
                                        "id": 1108,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1107,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1128,
                                                "src": "7198:12:4",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1106,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7198:5:4",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7197:14:4"
                                    },
                                    "scope": 1129,
                                    "src": "7083:725:4",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                }
                            ],
                            "scope": 1130,
                            "src": "126:7684:4",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:7778:4"
                },
                "id": 4
            },
            "@openzeppelin/contracts/utils/Context.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/Context.sol",
                    "exportedSymbols": {
                        "Context": [
                            1152
                        ]
                    },
                    "id": 1153,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1131,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:5"
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "Context",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "fullyImplemented": true,
                            "id": 1152,
                            "linearizedBaseContracts": [
                                1152
                            ],
                            "name": "Context",
                            "nameLocation": "572:7:5",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 1139,
                                        "nodeType": "Block",
                                        "src": "648:34:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "expression": {
                                                        "id": 1136,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "665:3:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 1137,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sender",
                                                    "nodeType": "MemberAccess",
                                                    "src": "665:10:5",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "functionReturnParameters": 1135,
                                                "id": 1138,
                                                "nodeType": "Return",
                                                "src": "658:17:5"
                                            }
                                        ]
                                    },
                                    "id": 1140,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_msgSender",
                                    "nameLocation": "595:10:5",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1132,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "605:2:5"
                                    },
                                    "returnParameters": {
                                        "id": 1135,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1134,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1140,
                                                "src": "639:7:5",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1133,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "639:7:5",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "638:9:5"
                                    },
                                    "scope": 1152,
                                    "src": "586:96:5",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1150,
                                        "nodeType": "Block",
                                        "src": "755:165:5",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 1145,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -28,
                                                    "src": "765:4:5",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_Context_$1152",
                                                        "typeString": "contract Context"
                                                    }
                                                },
                                                "id": 1146,
                                                "nodeType": "ExpressionStatement",
                                                "src": "765:4:5"
                                            },
                                            {
                                                "expression": {
                                                    "expression": {
                                                        "id": 1147,
                                                        "name": "msg",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -15,
                                                        "src": "905:3:5",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_message",
                                                            "typeString": "msg"
                                                        }
                                                    },
                                                    "id": 1148,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "data",
                                                    "nodeType": "MemberAccess",
                                                    "src": "905:8:5",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                                        "typeString": "bytes calldata"
                                                    }
                                                },
                                                "functionReturnParameters": 1144,
                                                "id": 1149,
                                                "nodeType": "Return",
                                                "src": "898:15:5"
                                            }
                                        ]
                                    },
                                    "id": 1151,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_msgData",
                                    "nameLocation": "697:8:5",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1141,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "705:2:5"
                                    },
                                    "returnParameters": {
                                        "id": 1144,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1143,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1151,
                                                "src": "739:14:5",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1142,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "739:5:5",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "738:16:5"
                                    },
                                    "scope": 1152,
                                    "src": "688:232:5",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 1153,
                            "src": "554:368:5",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:890:5"
                },
                "id": 5
            },
            "@openzeppelin/contracts/utils/math/SafeMath.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/math/SafeMath.sol",
                    "exportedSymbols": {
                        "SafeMath": [
                            1464
                        ]
                    },
                    "id": 1465,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1154,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:6"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "SafeMath",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 1155,
                                "nodeType": "StructuredDocumentation",
                                "src": "211:186:6",
                                "text": " @dev Wrappers over Solidity's arithmetic operations.\n NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler\n now has built in overflow checking."
                            },
                            "fullyImplemented": true,
                            "id": 1464,
                            "linearizedBaseContracts": [
                                1464
                            ],
                            "name": "SafeMath",
                            "nameLocation": "406:8:6",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 1186,
                                        "nodeType": "Block",
                                        "src": "633:140:6",
                                        "statements": [
                                            {
                                                "id": 1185,
                                                "nodeType": "UncheckedBlock",
                                                "src": "643:124:6",
                                                "statements": [
                                                    {
                                                        "assignments": [
                                                            1168
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1168,
                                                                "mutability": "mutable",
                                                                "name": "c",
                                                                "nameLocation": "675:1:6",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1185,
                                                                "src": "667:9:6",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1167,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "667:7:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1172,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1171,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1169,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1158,
                                                                "src": "679:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "id": 1170,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1160,
                                                                "src": "683:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "679:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "667:17:6"
                                                    },
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1175,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1173,
                                                                "name": "c",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1168,
                                                                "src": "702:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<",
                                                            "rightExpression": {
                                                                "id": 1174,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1158,
                                                                "src": "706:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "702:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 1180,
                                                        "nodeType": "IfStatement",
                                                        "src": "698:28:6",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 1176,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "717:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1177,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "724:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 1178,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "716:10:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1166,
                                                            "id": 1179,
                                                            "nodeType": "Return",
                                                            "src": "709:17:6"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 1181,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "748:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "id": 1182,
                                                                    "name": "c",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1168,
                                                                    "src": "754:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 1183,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "747:9:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1166,
                                                        "id": 1184,
                                                        "nodeType": "Return",
                                                        "src": "740:16:6"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1156,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "421:131:6",
                                        "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                                    },
                                    "id": 1187,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "tryAdd",
                                    "nameLocation": "566:6:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1161,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1158,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "581:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1187,
                                                "src": "573:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1157,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "573:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1160,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "592:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1187,
                                                "src": "584:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1159,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "584:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "572:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1166,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1163,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1187,
                                                "src": "618:4:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1162,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "618:4:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1165,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1187,
                                                "src": "624:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1164,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "624:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "617:15:6"
                                    },
                                    "scope": 1464,
                                    "src": "557:216:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1214,
                                        "nodeType": "Block",
                                        "src": "995:113:6",
                                        "statements": [
                                            {
                                                "id": 1213,
                                                "nodeType": "UncheckedBlock",
                                                "src": "1005:97:6",
                                                "statements": [
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1201,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1199,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1192,
                                                                "src": "1033:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "id": 1200,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1190,
                                                                "src": "1037:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1033:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 1206,
                                                        "nodeType": "IfStatement",
                                                        "src": "1029:28:6",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 1202,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1048:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1203,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1055:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 1204,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1047:10:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1198,
                                                            "id": 1205,
                                                            "nodeType": "Return",
                                                            "src": "1040:17:6"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 1207,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1079:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1210,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1208,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1190,
                                                                        "src": "1085:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "id": 1209,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1192,
                                                                        "src": "1089:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "1085:5:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 1211,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "1078:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1198,
                                                        "id": 1212,
                                                        "nodeType": "Return",
                                                        "src": "1071:20:6"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1188,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "779:135:6",
                                        "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                                    },
                                    "id": 1215,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "trySub",
                                    "nameLocation": "928:6:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1193,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1190,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "943:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1215,
                                                "src": "935:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1189,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "935:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1192,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "954:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1215,
                                                "src": "946:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1191,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "946:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "934:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1198,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1195,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1215,
                                                "src": "980:4:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1194,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "980:4:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1197,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1215,
                                                "src": "986:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1196,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "986:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "979:15:6"
                                    },
                                    "scope": 1464,
                                    "src": "919:189:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1256,
                                        "nodeType": "Block",
                                        "src": "1332:417:6",
                                        "statements": [
                                            {
                                                "id": 1255,
                                                "nodeType": "UncheckedBlock",
                                                "src": "1342:401:6",
                                                "statements": [
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1229,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1227,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1218,
                                                                "src": "1600:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1228,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1605:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "1600:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 1234,
                                                        "nodeType": "IfStatement",
                                                        "src": "1596:28:6",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "74727565",
                                                                        "id": 1230,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1616:4:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "true"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1231,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1622:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 1232,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1615:9:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1226,
                                                            "id": 1233,
                                                            "nodeType": "Return",
                                                            "src": "1608:16:6"
                                                        }
                                                    },
                                                    {
                                                        "assignments": [
                                                            1236
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1236,
                                                                "mutability": "mutable",
                                                                "name": "c",
                                                                "nameLocation": "1646:1:6",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1255,
                                                                "src": "1638:9:6",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1235,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1638:7:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1240,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1239,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1237,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1218,
                                                                "src": "1650:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "*",
                                                            "rightExpression": {
                                                                "id": 1238,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1220,
                                                                "src": "1654:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1650:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1638:17:6"
                                                    },
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1245,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1243,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1241,
                                                                    "name": "c",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1236,
                                                                    "src": "1673:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "/",
                                                                "rightExpression": {
                                                                    "id": 1242,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1218,
                                                                    "src": "1677:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "1673:5:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "id": 1244,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1220,
                                                                "src": "1682:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1673:10:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 1250,
                                                        "nodeType": "IfStatement",
                                                        "src": "1669:33:6",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 1246,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1693:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1247,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "1700:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 1248,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1692:10:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1226,
                                                            "id": 1249,
                                                            "nodeType": "Return",
                                                            "src": "1685:17:6"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 1251,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1724:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "id": 1252,
                                                                    "name": "c",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1236,
                                                                    "src": "1730:1:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 1253,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "1723:9:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1226,
                                                        "id": 1254,
                                                        "nodeType": "Return",
                                                        "src": "1716:16:6"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1216,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1114:137:6",
                                        "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._"
                                    },
                                    "id": 1257,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "tryMul",
                                    "nameLocation": "1265:6:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1221,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1218,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1280:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1257,
                                                "src": "1272:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1217,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1272:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1220,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1291:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1257,
                                                "src": "1283:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1219,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1283:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1271:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1226,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1223,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1257,
                                                "src": "1317:4:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1222,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1317:4:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1225,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1257,
                                                "src": "1323:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1224,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1323:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1316:15:6"
                                    },
                                    "scope": 1464,
                                    "src": "1256:493:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1284,
                                        "nodeType": "Block",
                                        "src": "1974:114:6",
                                        "statements": [
                                            {
                                                "id": 1283,
                                                "nodeType": "UncheckedBlock",
                                                "src": "1984:98:6",
                                                "statements": [
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1271,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1269,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1262,
                                                                "src": "2012:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1270,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2017:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "2012:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 1276,
                                                        "nodeType": "IfStatement",
                                                        "src": "2008:29:6",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 1272,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2028:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1273,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2035:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 1274,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "2027:10:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1268,
                                                            "id": 1275,
                                                            "nodeType": "Return",
                                                            "src": "2020:17:6"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 1277,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2059:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1280,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1278,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1260,
                                                                        "src": "2065:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "/",
                                                                    "rightExpression": {
                                                                        "id": 1279,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1262,
                                                                        "src": "2069:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2065:5:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 1281,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "2058:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1268,
                                                        "id": 1282,
                                                        "nodeType": "Return",
                                                        "src": "2051:20:6"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1258,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1755:138:6",
                                        "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._"
                                    },
                                    "id": 1285,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "tryDiv",
                                    "nameLocation": "1907:6:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1263,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1260,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1922:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1285,
                                                "src": "1914:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1259,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1914:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1262,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1933:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1285,
                                                "src": "1925:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1261,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1925:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1913:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1268,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1265,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1285,
                                                "src": "1959:4:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1264,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1959:4:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1267,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1285,
                                                "src": "1965:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1266,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1965:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1958:15:6"
                                    },
                                    "scope": 1464,
                                    "src": "1898:190:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1312,
                                        "nodeType": "Block",
                                        "src": "2323:114:6",
                                        "statements": [
                                            {
                                                "id": 1311,
                                                "nodeType": "UncheckedBlock",
                                                "src": "2333:98:6",
                                                "statements": [
                                                    {
                                                        "condition": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1299,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1297,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1290,
                                                                "src": "2361:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 1298,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2366:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "2361:6:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "id": 1304,
                                                        "nodeType": "IfStatement",
                                                        "src": "2357:29:6",
                                                        "trueBody": {
                                                            "expression": {
                                                                "components": [
                                                                    {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 1300,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2377:5:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 1301,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2384:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    }
                                                                ],
                                                                "id": 1302,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "2376:10:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$",
                                                                    "typeString": "tuple(bool,int_const 0)"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1296,
                                                            "id": 1303,
                                                            "nodeType": "Return",
                                                            "src": "2369:17:6"
                                                        }
                                                    },
                                                    {
                                                        "expression": {
                                                            "components": [
                                                                {
                                                                    "hexValue": "74727565",
                                                                    "id": 1305,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "bool",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2408:4:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "value": "true"
                                                                },
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1308,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1306,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1288,
                                                                        "src": "2414:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "%",
                                                                    "rightExpression": {
                                                                        "id": 1307,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1290,
                                                                        "src": "2418:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2414:5:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "id": 1309,
                                                            "isConstant": false,
                                                            "isInlineArray": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "TupleExpression",
                                                            "src": "2407:13:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$",
                                                                "typeString": "tuple(bool,uint256)"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1296,
                                                        "id": 1310,
                                                        "nodeType": "Return",
                                                        "src": "2400:20:6"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1286,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2094:148:6",
                                        "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._"
                                    },
                                    "id": 1313,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "tryMod",
                                    "nameLocation": "2256:6:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1291,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1288,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2271:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1313,
                                                "src": "2263:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1287,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2263:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1290,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2282:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1313,
                                                "src": "2274:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1289,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2274:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2262:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1296,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1293,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1313,
                                                "src": "2308:4:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1292,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2308:4:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1295,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1313,
                                                "src": "2314:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1294,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2314:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2307:15:6"
                                    },
                                    "scope": 1464,
                                    "src": "2247:190:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1327,
                                        "nodeType": "Block",
                                        "src": "2739:29:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1325,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1323,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1316,
                                                        "src": "2756:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 1324,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1318,
                                                        "src": "2760:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2756:5:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 1322,
                                                "id": 1326,
                                                "nodeType": "Return",
                                                "src": "2749:12:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1314,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2443:224:6",
                                        "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                                    },
                                    "id": 1328,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "2681:3:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1319,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1316,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2693:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1328,
                                                "src": "2685:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1315,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2685:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1318,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2704:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1328,
                                                "src": "2696:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1317,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2696:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2684:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1322,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1321,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1328,
                                                "src": "2730:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1320,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2730:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2729:9:6"
                                    },
                                    "scope": 1464,
                                    "src": "2672:96:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1342,
                                        "nodeType": "Block",
                                        "src": "3106:29:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1340,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1338,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1331,
                                                        "src": "3123:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 1339,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1333,
                                                        "src": "3127:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3123:5:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 1337,
                                                "id": 1341,
                                                "nodeType": "Return",
                                                "src": "3116:12:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1329,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2774:260:6",
                                        "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                                    },
                                    "id": 1343,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "3048:3:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1334,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1331,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3060:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1343,
                                                "src": "3052:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1330,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3052:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1333,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3071:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1343,
                                                "src": "3063:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1332,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3063:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3051:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1337,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1336,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1343,
                                                "src": "3097:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1335,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3097:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3096:9:6"
                                    },
                                    "scope": 1464,
                                    "src": "3039:96:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1357,
                                        "nodeType": "Block",
                                        "src": "3449:29:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1355,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1353,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1346,
                                                        "src": "3466:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 1354,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1348,
                                                        "src": "3470:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3466:5:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 1352,
                                                "id": 1356,
                                                "nodeType": "Return",
                                                "src": "3459:12:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1344,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3141:236:6",
                                        "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                                    },
                                    "id": 1358,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "3391:3:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1349,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1346,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3403:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1358,
                                                "src": "3395:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1345,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3395:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1348,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3414:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1358,
                                                "src": "3406:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1347,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3406:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3394:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1352,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1351,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1358,
                                                "src": "3440:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1350,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3440:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3439:9:6"
                                    },
                                    "scope": 1464,
                                    "src": "3382:96:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1372,
                                        "nodeType": "Block",
                                        "src": "3834:29:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1370,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1368,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1361,
                                                        "src": "3851:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 1369,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1363,
                                                        "src": "3855:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3851:5:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 1367,
                                                "id": 1371,
                                                "nodeType": "Return",
                                                "src": "3844:12:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1359,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3484:278:6",
                                        "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator.\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 1373,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "3776:3:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1364,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1361,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3788:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1373,
                                                "src": "3780:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1360,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3780:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1363,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3799:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1373,
                                                "src": "3791:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1362,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3791:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3779:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1367,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1366,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1373,
                                                "src": "3825:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1365,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3825:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3824:9:6"
                                    },
                                    "scope": 1464,
                                    "src": "3767:96:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1387,
                                        "nodeType": "Block",
                                        "src": "4383:29:6",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1385,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1383,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1376,
                                                        "src": "4400:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "%",
                                                    "rightExpression": {
                                                        "id": 1384,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1378,
                                                        "src": "4404:1:6",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4400:5:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 1382,
                                                "id": 1386,
                                                "nodeType": "Return",
                                                "src": "4393:12:6"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1374,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3869:442:6",
                                        "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 1388,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mod",
                                    "nameLocation": "4325:3:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1379,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1376,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4337:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1388,
                                                "src": "4329:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1375,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4329:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1378,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4348:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1388,
                                                "src": "4340:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1377,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4340:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4328:22:6"
                                    },
                                    "returnParameters": {
                                        "id": 1382,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1381,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1388,
                                                "src": "4374:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1380,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4374:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4373:9:6"
                                    },
                                    "scope": 1464,
                                    "src": "4316:96:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1412,
                                        "nodeType": "Block",
                                        "src": "4971:106:6",
                                        "statements": [
                                            {
                                                "id": 1411,
                                                "nodeType": "UncheckedBlock",
                                                "src": "4981:90:6",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1403,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1401,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1393,
                                                                        "src": "5013:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<=",
                                                                    "rightExpression": {
                                                                        "id": 1402,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1391,
                                                                        "src": "5018:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "5013:6:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1404,
                                                                    "name": "errorMessage",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1395,
                                                                    "src": "5021:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                ],
                                                                "id": 1400,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [
                                                                    -18,
                                                                    -18
                                                                ],
                                                                "referencedDeclaration": -18,
                                                                "src": "5005:7:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 1405,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5005:29:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 1406,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "5005:29:6"
                                                    },
                                                    {
                                                        "expression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1409,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1407,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1391,
                                                                "src": "5055:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 1408,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1393,
                                                                "src": "5059:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5055:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1399,
                                                        "id": 1410,
                                                        "nodeType": "Return",
                                                        "src": "5048:12:6"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1389,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4418:453:6",
                                        "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                                    },
                                    "id": 1413,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "4885:3:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1396,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1391,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4897:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1413,
                                                "src": "4889:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1390,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4889:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1393,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4908:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1413,
                                                "src": "4900:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1392,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4900:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1395,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "4925:12:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1413,
                                                "src": "4911:26:6",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1394,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4911:6:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4888:50:6"
                                    },
                                    "returnParameters": {
                                        "id": 1399,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1398,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1413,
                                                "src": "4962:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1397,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4962:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4961:9:6"
                                    },
                                    "scope": 1464,
                                    "src": "4876:201:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1437,
                                        "nodeType": "Block",
                                        "src": "5879:105:6",
                                        "statements": [
                                            {
                                                "id": 1436,
                                                "nodeType": "UncheckedBlock",
                                                "src": "5889:89:6",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1428,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1426,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1418,
                                                                        "src": "5921:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">",
                                                                    "rightExpression": {
                                                                        "hexValue": "30",
                                                                        "id": 1427,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "5925:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "src": "5921:5:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1429,
                                                                    "name": "errorMessage",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1420,
                                                                    "src": "5928:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                ],
                                                                "id": 1425,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [
                                                                    -18,
                                                                    -18
                                                                ],
                                                                "referencedDeclaration": -18,
                                                                "src": "5913:7:6",
                                                                "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": "5913:28:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 1431,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "5913:28:6"
                                                    },
                                                    {
                                                        "expression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1434,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1432,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1416,
                                                                "src": "5962:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "id": 1433,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1418,
                                                                "src": "5966:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "5962:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1424,
                                                        "id": 1435,
                                                        "nodeType": "Return",
                                                        "src": "5955:12:6"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1414,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5083:696:6",
                                        "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 1438,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "5793:3:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1421,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1416,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "5805:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1438,
                                                "src": "5797:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1415,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5797:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1418,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "5816:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1438,
                                                "src": "5808:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1417,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5808:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1420,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "5833:12:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1438,
                                                "src": "5819:26:6",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1419,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5819:6:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5796:50:6"
                                    },
                                    "returnParameters": {
                                        "id": 1424,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1423,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1438,
                                                "src": "5870:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1422,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5870:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5869:9:6"
                                    },
                                    "scope": 1464,
                                    "src": "5784:200:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1462,
                                        "nodeType": "Block",
                                        "src": "6725:105:6",
                                        "statements": [
                                            {
                                                "id": 1461,
                                                "nodeType": "UncheckedBlock",
                                                "src": "6735:89:6",
                                                "statements": [
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1453,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1451,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1443,
                                                                        "src": "6767:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">",
                                                                    "rightExpression": {
                                                                        "hexValue": "30",
                                                                        "id": 1452,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "6771:1:6",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0"
                                                                    },
                                                                    "src": "6767:5:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 1454,
                                                                    "name": "errorMessage",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1445,
                                                                    "src": "6774:12:6",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                    }
                                                                ],
                                                                "id": 1450,
                                                                "name": "require",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [
                                                                    -18,
                                                                    -18
                                                                ],
                                                                "referencedDeclaration": -18,
                                                                "src": "6759:7:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                                    "typeString": "function (bool,string memory) pure"
                                                                }
                                                            },
                                                            "id": 1455,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6759:28:6",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_tuple$__$",
                                                                "typeString": "tuple()"
                                                            }
                                                        },
                                                        "id": 1456,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "6759:28:6"
                                                    },
                                                    {
                                                        "expression": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1459,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 1457,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1441,
                                                                "src": "6808:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "%",
                                                            "rightExpression": {
                                                                "id": 1458,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1443,
                                                                "src": "6812:1:6",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "6808:5:6",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1449,
                                                        "id": 1460,
                                                        "nodeType": "Return",
                                                        "src": "6801:12:6"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1439,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5990:635:6",
                                        "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 1463,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mod",
                                    "nameLocation": "6639:3:6",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1446,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1441,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "6651:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1463,
                                                "src": "6643:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1440,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6643:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1443,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "6662:1:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1463,
                                                "src": "6654:9:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1442,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6654:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1445,
                                                "mutability": "mutable",
                                                "name": "errorMessage",
                                                "nameLocation": "6679:12:6",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1463,
                                                "src": "6665:26:6",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 1444,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6665:6:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6642:50:6"
                                    },
                                    "returnParameters": {
                                        "id": 1449,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1448,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1463,
                                                "src": "6716:7:6",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1447,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6716:7:6",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6715:9:6"
                                    },
                                    "scope": 1464,
                                    "src": "6630:200:6",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 1465,
                            "src": "398:6434:6",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:6800:6"
                },
                "id": 6
            },
            "@openzeppelin/contracts/utils/math/SignedSafeMath.sol": {
                "ast": {
                    "absolutePath": "@openzeppelin/contracts/utils/math/SignedSafeMath.sol",
                    "exportedSymbols": {
                        "SignedSafeMath": [
                            1528
                        ]
                    },
                    "id": 1529,
                    "license": "MIT",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1466,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "33:23:7"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "SignedSafeMath",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 1467,
                                "nodeType": "StructuredDocumentation",
                                "src": "58:192:7",
                                "text": " @dev Wrappers over Solidity's arithmetic operations.\n NOTE: `SignedSafeMath` is no longer needed starting with Solidity 0.8. The compiler\n now has built in overflow checking."
                            },
                            "fullyImplemented": true,
                            "id": 1528,
                            "linearizedBaseContracts": [
                                1528
                            ],
                            "name": "SignedSafeMath",
                            "nameLocation": "259:14:7",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 1481,
                                        "nodeType": "Block",
                                        "src": "583:29:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 1479,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1477,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1470,
                                                        "src": "600:1:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "*",
                                                    "rightExpression": {
                                                        "id": 1478,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1472,
                                                        "src": "604:1:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "600:5:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "functionReturnParameters": 1476,
                                                "id": 1480,
                                                "nodeType": "Return",
                                                "src": "593:12:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1468,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "280:234:7",
                                        "text": " @dev Returns the multiplication of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow."
                                    },
                                    "id": 1482,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "528:3:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1473,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1470,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "539:1:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1482,
                                                "src": "532:8:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1469,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "532:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1472,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "549:1:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1482,
                                                "src": "542:8:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1471,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "542:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "531:20:7"
                                    },
                                    "returnParameters": {
                                        "id": 1476,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1475,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1482,
                                                "src": "575:6:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1474,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "575:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "574:8:7"
                                    },
                                    "scope": 1528,
                                    "src": "519:93:7",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1496,
                                        "nodeType": "Block",
                                        "src": "961:29:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 1494,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1492,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1485,
                                                        "src": "978:1:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 1493,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1487,
                                                        "src": "982:1:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "978:5:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "functionReturnParameters": 1491,
                                                "id": 1495,
                                                "nodeType": "Return",
                                                "src": "971:12:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1483,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "618:274:7",
                                        "text": " @dev Returns the integer division of two signed integers. Reverts on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator.\n Requirements:\n - The divisor cannot be zero."
                                    },
                                    "id": 1497,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "906:3:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1488,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1485,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "917:1:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1497,
                                                "src": "910:8:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1484,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "910:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1487,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "927:1:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1497,
                                                "src": "920:8:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1486,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "920:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "909:20:7"
                                    },
                                    "returnParameters": {
                                        "id": 1491,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1490,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1497,
                                                "src": "953:6:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1489,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "953:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "952:8:7"
                                    },
                                    "scope": 1528,
                                    "src": "897:93:7",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1511,
                                        "nodeType": "Block",
                                        "src": "1293:29:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 1509,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1507,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1500,
                                                        "src": "1310:1:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 1508,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1502,
                                                        "src": "1314:1:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "1310:5:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "functionReturnParameters": 1506,
                                                "id": 1510,
                                                "nodeType": "Return",
                                                "src": "1303:12:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1498,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "996:228:7",
                                        "text": " @dev Returns the subtraction of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow."
                                    },
                                    "id": 1512,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "1238:3:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1503,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1500,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1249:1:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1512,
                                                "src": "1242:8:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1499,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1242:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1502,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1259:1:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1512,
                                                "src": "1252:8:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1501,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1252:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1241:20:7"
                                    },
                                    "returnParameters": {
                                        "id": 1506,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1505,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1512,
                                                "src": "1285:6:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1504,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1285:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1284:8:7"
                                    },
                                    "scope": 1528,
                                    "src": "1229:93:7",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1526,
                                        "nodeType": "Block",
                                        "src": "1619:29:7",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 1524,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1522,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1515,
                                                        "src": "1636:1:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 1523,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1517,
                                                        "src": "1640:1:7",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "1636:5:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "functionReturnParameters": 1521,
                                                "id": 1525,
                                                "nodeType": "Return",
                                                "src": "1629:12:7"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1513,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1328:222:7",
                                        "text": " @dev Returns the addition of two signed integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow."
                                    },
                                    "id": 1527,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "1564:3:7",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1518,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1515,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1575:1:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1527,
                                                "src": "1568:8:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1514,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1568:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1517,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1585:1:7",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1527,
                                                "src": "1578:8:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1516,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1578:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1567:20:7"
                                    },
                                    "returnParameters": {
                                        "id": 1521,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1520,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1527,
                                                "src": "1611:6:7",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 1519,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1611:6:7",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1610:8:7"
                                    },
                                    "scope": 1528,
                                    "src": "1555:93:7",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 1529,
                            "src": "251:1399:7",
                            "usedErrors": []
                        }
                    ],
                    "src": "33:1618:7"
                },
                "id": 7
            },
            "contracts/common/implementation/AncillaryData.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/AncillaryData.sol",
                    "exportedSymbols": {
                        "AncillaryData": [
                            1936
                        ]
                    },
                    "id": 1937,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1530,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:8"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "AncillaryData",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 1531,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:595:8",
                                "text": " @title Library for encoding and decoding ancillary data for DVM price requests.\n @notice  We assume that on-chain ancillary data can be formatted directly from bytes to utf8 encoding via\n web3.utils.hexToUtf8, and that clients will parse the utf8-encoded ancillary data as a comma-delimitted key-value\n dictionary. Therefore, this library provides internal methods that aid appending to ancillary data from Solidity\n smart contracts. More details on UMA's ancillary data guidelines below:\n https://docs.google.com/document/d/1zhKKjgY1BupBGPPrY_WOJvui0B6DMcd-xDR8-9-SPDw/edit"
                            },
                            "fullyImplemented": true,
                            "id": 1936,
                            "linearizedBaseContracts": [
                                1936
                            ],
                            "name": "AncillaryData",
                            "nameLocation": "671:13:8",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 1670,
                                        "nodeType": "Block",
                                        "src": "974:1229:8",
                                        "statements": [
                                            {
                                                "id": 1669,
                                                "nodeType": "UncheckedBlock",
                                                "src": "984:1213:8",
                                                "statements": [
                                                    {
                                                        "assignments": [
                                                            1539
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1539,
                                                                "mutability": "mutable",
                                                                "name": "x",
                                                                "nameLocation": "1016:1:8",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1669,
                                                                "src": "1008:9:8",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1538,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1008:7:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1544,
                                                        "initialValue": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1542,
                                                                    "name": "bytesIn",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1533,
                                                                    "src": "1028:7:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 1541,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "1020:7:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                                    "typeString": "type(uint256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1540,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1020:7:8",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1543,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1020:16:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1008:28:8"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 1549,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 1545,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1539,
                                                                "src": "1084:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1548,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 1546,
                                                                    "name": "x",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1539,
                                                                    "src": "1088:1:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830303030303030303030303030303030303030303030303030303030303030306666666666666666666666666666666666666666666666666666666666666666",
                                                                    "id": 1547,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1092:66:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1",
                                                                        "typeString": "int_const 3402...(31 digits omitted)...1455"
                                                                    },
                                                                    "value": "0x00000000000000000000000000000000ffffffffffffffffffffffffffffffff"
                                                                },
                                                                "src": "1088:70:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1084:74:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 1550,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1084:74:8"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 1563,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 1551,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1539,
                                                                "src": "1172:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1562,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 1559,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 1552,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1539,
                                                                                "src": "1177:1:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 1557,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 1553,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1539,
                                                                                            "src": "1182:1:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                                                                                "typeString": "int_const 18446744073709551616"
                                                                                            },
                                                                                            "id": 1556,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 1554,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1186:1:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "3634",
                                                                                                "id": 1555,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1189:2:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_64_by_1",
                                                                                                    "typeString": "int_const 64"
                                                                                                },
                                                                                                "value": "64"
                                                                                            },
                                                                                            "src": "1186:5:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_18446744073709551616_by_1",
                                                                                                "typeString": "int_const 18446744073709551616"
                                                                                            }
                                                                                        },
                                                                                        "src": "1182:9:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 1558,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1181:11:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1177:15:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 1560,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1176:17:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830303030303030303030303030303030666666666666666666666666666666663030303030303030303030303030303066666666666666666666666666666666",
                                                                    "id": 1561,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1196:66:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_6277101735386680763495507056286727952657427581105975853055_by_1",
                                                                        "typeString": "int_const 6277...(50 digits omitted)...3055"
                                                                    },
                                                                    "value": "0x0000000000000000ffffffffffffffff0000000000000000ffffffffffffffff"
                                                                },
                                                                "src": "1176:86:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1172:90:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 1564,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1172:90:8"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 1577,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 1565,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1539,
                                                                "src": "1276:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1576,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 1573,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 1566,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1539,
                                                                                "src": "1281:1:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 1571,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 1567,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1539,
                                                                                            "src": "1286:1:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_4294967296_by_1",
                                                                                                "typeString": "int_const 4294967296"
                                                                                            },
                                                                                            "id": 1570,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 1568,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1290:1:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "3332",
                                                                                                "id": 1569,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1293:2:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_32_by_1",
                                                                                                    "typeString": "int_const 32"
                                                                                                },
                                                                                                "value": "32"
                                                                                            },
                                                                                            "src": "1290:5:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_4294967296_by_1",
                                                                                                "typeString": "int_const 4294967296"
                                                                                            }
                                                                                        },
                                                                                        "src": "1286:9:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 1572,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1285:11:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1281:15:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 1574,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1280:17:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830303030303030306666666666666666303030303030303066666666666666663030303030303030666666666666666630303030303030306666666666666666",
                                                                    "id": 1575,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1300:66:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_26959946660873538060741835960174461801791452538186943042387869433855_by_1",
                                                                        "typeString": "int_const 2695...(60 digits omitted)...3855"
                                                                    },
                                                                    "value": "0x00000000ffffffff00000000ffffffff00000000ffffffff00000000ffffffff"
                                                                },
                                                                "src": "1280:86:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1276:90:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 1578,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1276:90:8"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 1591,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 1579,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1539,
                                                                "src": "1380:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1590,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 1587,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 1580,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1539,
                                                                                "src": "1385:1:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 1585,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 1581,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1539,
                                                                                            "src": "1390:1:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_65536_by_1",
                                                                                                "typeString": "int_const 65536"
                                                                                            },
                                                                                            "id": 1584,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 1582,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1394:1:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "3136",
                                                                                                "id": 1583,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1397:2:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_16_by_1",
                                                                                                    "typeString": "int_const 16"
                                                                                                },
                                                                                                "value": "16"
                                                                                            },
                                                                                            "src": "1394:5:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_65536_by_1",
                                                                                                "typeString": "int_const 65536"
                                                                                            }
                                                                                        },
                                                                                        "src": "1390:9:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 1586,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1389:11:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1385:15:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 1588,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1384:17:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830303030666666663030303066666666303030306666666630303030666666663030303066666666303030306666666630303030666666663030303066666666",
                                                                    "id": 1589,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1404:66:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1766820105243087041267848467410591083712559083657179364930612997358944255_by_1",
                                                                        "typeString": "int_const 1766...(65 digits omitted)...4255"
                                                                    },
                                                                    "value": "0x0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff"
                                                                },
                                                                "src": "1384:86:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1380:90:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 1592,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1380:90:8"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 1605,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 1593,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1539,
                                                                "src": "1484:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1604,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 1601,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 1594,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1539,
                                                                                "src": "1489:1:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 1599,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 1595,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1539,
                                                                                            "src": "1494:1:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_256_by_1",
                                                                                                "typeString": "int_const 256"
                                                                                            },
                                                                                            "id": 1598,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 1596,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1498:1:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "38",
                                                                                                "id": 1597,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1501:1:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_8_by_1",
                                                                                                    "typeString": "int_const 8"
                                                                                                },
                                                                                                "value": "8"
                                                                                            },
                                                                                            "src": "1498:4:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_256_by_1",
                                                                                                "typeString": "int_const 256"
                                                                                            }
                                                                                        },
                                                                                        "src": "1494:8:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 1600,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1493:10:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1489:14:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 1602,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1488:16:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830306666303066663030666630306666303066663030666630306666303066663030666630306666303066663030666630306666303066663030666630306666",
                                                                    "id": 1603,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1507:66:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_450552876409790643671482431940419874915447411150352389258589821042463539455_by_1",
                                                                        "typeString": "int_const 4505...(67 digits omitted)...9455"
                                                                    },
                                                                    "value": "0x00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff"
                                                                },
                                                                "src": "1488:85:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1484:89:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 1606,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1484:89:8"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 1619,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 1607,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1539,
                                                                "src": "1587:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1618,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 1615,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 1608,
                                                                                "name": "x",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 1539,
                                                                                "src": "1592:1:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "|",
                                                                            "rightExpression": {
                                                                                "components": [
                                                                                    {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 1613,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "id": 1609,
                                                                                            "name": "x",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 1539,
                                                                                            "src": "1597:1:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "commonType": {
                                                                                                "typeIdentifier": "t_rational_16_by_1",
                                                                                                "typeString": "int_const 16"
                                                                                            },
                                                                                            "id": 1612,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                                "hexValue": "32",
                                                                                                "id": 1610,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1601:1:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                                                    "typeString": "int_const 2"
                                                                                                },
                                                                                                "value": "2"
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "**",
                                                                                            "rightExpression": {
                                                                                                "hexValue": "34",
                                                                                                "id": 1611,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "1604:1:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_4_by_1",
                                                                                                    "typeString": "int_const 4"
                                                                                                },
                                                                                                "value": "4"
                                                                                            },
                                                                                            "src": "1601:4:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_16_by_1",
                                                                                                "typeString": "int_const 16"
                                                                                            }
                                                                                        },
                                                                                        "src": "1597:8:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "id": 1614,
                                                                                "isConstant": false,
                                                                                "isInlineArray": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "TupleExpression",
                                                                                "src": "1596:10:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "1592:14:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 1616,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "1591:16:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&",
                                                                "rightExpression": {
                                                                    "hexValue": "307830663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066306630663066",
                                                                    "id": 1617,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "1610:66:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_6811299366900952671974763824040465167839410862684739061144563765171360567055_by_1",
                                                                        "typeString": "int_const 6811...(68 digits omitted)...7055"
                                                                    },
                                                                    "value": "0x0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"
                                                                },
                                                                "src": "1591:85:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "1587:89:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 1620,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "1587:89:8"
                                                    },
                                                    {
                                                        "assignments": [
                                                            1622
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1622,
                                                                "mutability": "mutable",
                                                                "name": "h",
                                                                "nameLocation": "1725:1:8",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1669,
                                                                "src": "1717:9:8",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1621,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1717:7:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1629,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1628,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1625,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 1623,
                                                                            "name": "x",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1539,
                                                                            "src": "1730:1:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "&",
                                                                        "rightExpression": {
                                                                            "hexValue": "307830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038303830383038",
                                                                            "id": 1624,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1734:66:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_3632692995680508091719874039488248089514352460098527499277100674758058969096_by_1",
                                                                                "typeString": "int_const 3632...(68 digits omitted)...9096"
                                                                            },
                                                                            "value": "0x0808080808080808080808080808080808080808080808080808080808080808"
                                                                        },
                                                                        "src": "1730:70:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 1626,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1729:72:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "hexValue": "38",
                                                                "id": 1627,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1804:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_8_by_1",
                                                                    "typeString": "int_const 8"
                                                                },
                                                                "value": "8"
                                                            },
                                                            "src": "1729:76:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1717:88:8"
                                                    },
                                                    {
                                                        "assignments": [
                                                            1631
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1631,
                                                                "mutability": "mutable",
                                                                "name": "i",
                                                                "nameLocation": "1827:1:8",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1669,
                                                                "src": "1819:9:8",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1630,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1819:7:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1638,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1637,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1634,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 1632,
                                                                            "name": "x",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1539,
                                                                            "src": "1832:1:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "&",
                                                                        "rightExpression": {
                                                                            "hexValue": "307830343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034303430343034",
                                                                            "id": 1633,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1836:66:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_1816346497840254045859937019744124044757176230049263749638550337379029484548_by_1",
                                                                                "typeString": "int_const 1816...(68 digits omitted)...4548"
                                                                            },
                                                                            "value": "0x0404040404040404040404040404040404040404040404040404040404040404"
                                                                        },
                                                                        "src": "1832:70:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 1635,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1831:72:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "hexValue": "34",
                                                                "id": 1636,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1906:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_4_by_1",
                                                                    "typeString": "int_const 4"
                                                                },
                                                                "value": "4"
                                                            },
                                                            "src": "1831:76:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1819:88:8"
                                                    },
                                                    {
                                                        "assignments": [
                                                            1640
                                                        ],
                                                        "declarations": [
                                                            {
                                                                "constant": false,
                                                                "id": 1640,
                                                                "mutability": "mutable",
                                                                "name": "j",
                                                                "nameLocation": "1929:1:8",
                                                                "nodeType": "VariableDeclaration",
                                                                "scope": 1669,
                                                                "src": "1921:9:8",
                                                                "stateVariable": false,
                                                                "storageLocation": "default",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "typeName": {
                                                                    "id": 1639,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "1921:7:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "visibility": "internal"
                                                            }
                                                        ],
                                                        "id": 1647,
                                                        "initialValue": {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 1646,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1643,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 1641,
                                                                            "name": "x",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1539,
                                                                            "src": "1934:1:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "&",
                                                                        "rightExpression": {
                                                                            "hexValue": "307830323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032303230323032",
                                                                            "id": 1642,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "1938:66:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_908173248920127022929968509872062022378588115024631874819275168689514742274_by_1",
                                                                                "typeString": "int_const 9081...(67 digits omitted)...2274"
                                                                            },
                                                                            "value": "0x0202020202020202020202020202020202020202020202020202020202020202"
                                                                        },
                                                                        "src": "1934:70:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 1644,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "1933:72:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "hexValue": "32",
                                                                "id": 1645,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "2008:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_2_by_1",
                                                                    "typeString": "int_const 2"
                                                                },
                                                                "value": "2"
                                                            },
                                                            "src": "1933:76:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "VariableDeclarationStatement",
                                                        "src": "1921:88:8"
                                                    },
                                                    {
                                                        "expression": {
                                                            "id": 1662,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftHandSide": {
                                                                "id": 1648,
                                                                "name": "x",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1539,
                                                                "src": "2023:1:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "Assignment",
                                                            "operator": "=",
                                                            "rightHandSide": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 1661,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1659,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1649,
                                                                        "name": "x",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1539,
                                                                        "src": "2027:1:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "+",
                                                                    "rightExpression": {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 1658,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "components": [
                                                                                {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "id": 1655,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "id": 1650,
                                                                                        "name": "h",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1622,
                                                                                        "src": "2032:1:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "&",
                                                                                    "rightExpression": {
                                                                                        "components": [
                                                                                            {
                                                                                                "commonType": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                },
                                                                                                "id": 1653,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "leftExpression": {
                                                                                                    "id": 1651,
                                                                                                    "name": "i",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 1631,
                                                                                                    "src": "2037:1:8",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                },
                                                                                                "nodeType": "BinaryOperation",
                                                                                                "operator": "|",
                                                                                                "rightExpression": {
                                                                                                    "id": 1652,
                                                                                                    "name": "j",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 1640,
                                                                                                    "src": "2041:1:8",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                },
                                                                                                "src": "2037:5:8",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_uint256",
                                                                                                    "typeString": "uint256"
                                                                                                }
                                                                                            }
                                                                                        ],
                                                                                        "id": 1654,
                                                                                        "isConstant": false,
                                                                                        "isInlineArray": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "TupleExpression",
                                                                                        "src": "2036:7:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "src": "2032:11:8",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "id": 1656,
                                                                            "isConstant": false,
                                                                            "isInlineArray": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "TupleExpression",
                                                                            "src": "2031:13:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "*",
                                                                        "rightExpression": {
                                                                            "hexValue": "30783237",
                                                                            "id": 1657,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "2047:4:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_39_by_1",
                                                                                "typeString": "int_const 39"
                                                                            },
                                                                            "value": "0x27"
                                                                        },
                                                                        "src": "2031:20:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "src": "2027:24:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "hexValue": "307833303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330333033303330",
                                                                    "id": 1660,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "2054:66:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_21796157974083048550319244236929488537086114760591164995662604048548353814576_by_1",
                                                                        "typeString": "int_const 2179...(69 digits omitted)...4576"
                                                                    },
                                                                    "value": "0x3030303030303030303030303030303030303030303030303030303030303030"
                                                                },
                                                                "src": "2027:93:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "2023:97:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 1663,
                                                        "nodeType": "ExpressionStatement",
                                                        "src": "2023:97:8"
                                                    },
                                                    {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1666,
                                                                    "name": "x",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1539,
                                                                    "src": "2184:1:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 1665,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "2176:7:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                                                    "typeString": "type(bytes32)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1664,
                                                                    "name": "bytes32",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "2176:7:8",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1667,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2176:10:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "functionReturnParameters": 1537,
                                                        "id": 1668,
                                                        "nodeType": "Return",
                                                        "src": "2169:17:8"
                                                    }
                                                ]
                                            }
                                        ]
                                    },
                                    "id": 1671,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUtf8Bytes32Bottom",
                                    "nameLocation": "906:19:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1534,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1533,
                                                "mutability": "mutable",
                                                "name": "bytesIn",
                                                "nameLocation": "934:7:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1671,
                                                "src": "926:15:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 1532,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "926:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "925:17:8"
                                    },
                                    "returnParameters": {
                                        "id": 1537,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1536,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1671,
                                                "src": "965:7:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 1535,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "965:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "964:9:8"
                                    },
                                    "scope": 1936,
                                    "src": "897:1306:8",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 1691,
                                        "nodeType": "Block",
                                        "src": "2661:107:8",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    "id": 1684,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1682,
                                                                        "name": "bytesIn",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1674,
                                                                        "src": "2715:7:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">>",
                                                                    "rightExpression": {
                                                                        "hexValue": "313238",
                                                                        "id": 1683,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "2726:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_128_by_1",
                                                                            "typeString": "int_const 128"
                                                                        },
                                                                        "value": "128"
                                                                    },
                                                                    "src": "2715:14:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 1681,
                                                                "name": "toUtf8Bytes32Bottom",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1671,
                                                                "src": "2695:19:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes32)"
                                                                }
                                                            },
                                                            "id": 1685,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2695:35:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1687,
                                                                    "name": "bytesIn",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1674,
                                                                    "src": "2752:7:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 1686,
                                                                "name": "toUtf8Bytes32Bottom",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1671,
                                                                "src": "2732:19:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes32)"
                                                                }
                                                            },
                                                            "id": 1688,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2732:28:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1679,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "2678:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 1680,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "2678:16:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1689,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2678:83:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1678,
                                                "id": 1690,
                                                "nodeType": "Return",
                                                "src": "2671:90:8"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1672,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2209:372:8",
                                        "text": " @notice Returns utf8-encoded bytes32 string that can be read via web3.utils.hexToUtf8.\n @dev Will return bytes32 in all lower case hex characters and without the leading 0x.\n This has minor changes from the toUtf8BytesAddress to control for the size of the input.\n @param bytesIn bytes32 to encode.\n @return utf8 encoded bytes32."
                                    },
                                    "id": 1692,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUtf8Bytes",
                                    "nameLocation": "2595:11:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1675,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1674,
                                                "mutability": "mutable",
                                                "name": "bytesIn",
                                                "nameLocation": "2615:7:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1692,
                                                "src": "2607:15:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 1673,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2607:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2606:17:8"
                                    },
                                    "returnParameters": {
                                        "id": 1678,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1677,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1692,
                                                "src": "2647:12:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1676,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2647:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2646:14:8"
                                    },
                                    "scope": 1936,
                                    "src": "2586:182:8",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1724,
                                        "nodeType": "Block",
                                        "src": "3221:142:8",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    "id": 1711,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "id": 1707,
                                                                                        "name": "x",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1695,
                                                                                        "src": "3303:1:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_address",
                                                                                            "typeString": "address"
                                                                                        }
                                                                                    ],
                                                                                    "id": 1706,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                    "src": "3295:7:8",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_bytes20_$",
                                                                                        "typeString": "type(bytes20)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 1705,
                                                                                        "name": "bytes20",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "3295:7:8",
                                                                                        "typeDescriptions": {}
                                                                                    }
                                                                                },
                                                                                "id": 1708,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "typeConversion",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "3295:10:8",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes20",
                                                                                    "typeString": "bytes20"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_bytes20",
                                                                                    "typeString": "bytes20"
                                                                                }
                                                                            ],
                                                                            "id": 1704,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "3287:7:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_bytes32_$",
                                                                                "typeString": "type(bytes32)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 1703,
                                                                                "name": "bytes32",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "3287:7:8",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 1709,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "3287:19:8",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": ">>",
                                                                    "rightExpression": {
                                                                        "hexValue": "313238",
                                                                        "id": 1710,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "3310:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_128_by_1",
                                                                            "typeString": "int_const 128"
                                                                        },
                                                                        "value": "128"
                                                                    },
                                                                    "src": "3287:26:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 1702,
                                                                "name": "toUtf8Bytes32Bottom",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1671,
                                                                "src": "3267:19:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes32)"
                                                                }
                                                            },
                                                            "id": 1712,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3267:47:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 1718,
                                                                                    "name": "x",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 1695,
                                                                                    "src": "3351:1:8",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_address",
                                                                                        "typeString": "address"
                                                                                    }
                                                                                ],
                                                                                "id": 1717,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "3343:7:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_bytes20_$",
                                                                                    "typeString": "type(bytes20)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 1716,
                                                                                    "name": "bytes20",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "3343:7:8",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 1719,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "3343:10:8",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes20",
                                                                                "typeString": "bytes20"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_bytes20",
                                                                                "typeString": "bytes20"
                                                                            }
                                                                        ],
                                                                        "id": 1715,
                                                                        "name": "toUtf8Bytes32Bottom",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1671,
                                                                        "src": "3323:19:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes32_$",
                                                                            "typeString": "function (bytes32) pure returns (bytes32)"
                                                                        }
                                                                    },
                                                                    "id": 1720,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "3323:31:8",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 1714,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "3316:6:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_bytes8_$",
                                                                    "typeString": "type(bytes8)"
                                                                },
                                                                "typeName": {
                                                                    "id": 1713,
                                                                    "name": "bytes8",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "3316:6:8",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 1721,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3316:39:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes8",
                                                                "typeString": "bytes8"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes8",
                                                                "typeString": "bytes8"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1700,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "3250:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 1701,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "3250:16:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1722,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3250:106:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1699,
                                                "id": 1723,
                                                "nodeType": "Return",
                                                "src": "3231:125:8"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1693,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2774:366:8",
                                        "text": " @notice Returns utf8-encoded address that can be read via web3.utils.hexToUtf8.\n Source: https://ethereum.stackexchange.com/questions/8346/convert-address-to-string/8447#8447\n @dev Will return address in all lower case characters and without the leading 0x.\n @param x address to encode.\n @return utf8 encoded address bytes."
                                    },
                                    "id": 1725,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUtf8BytesAddress",
                                    "nameLocation": "3154:18:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1696,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1695,
                                                "mutability": "mutable",
                                                "name": "x",
                                                "nameLocation": "3181:1:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1725,
                                                "src": "3173:9:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1694,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3173:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3172:11:8"
                                    },
                                    "returnParameters": {
                                        "id": 1699,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1698,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1725,
                                                "src": "3207:12:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1697,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3207:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3206:14:8"
                                    },
                                    "scope": 1936,
                                    "src": "3145:218:8",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1817,
                                        "nodeType": "Block",
                                        "src": "3642:473:8",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1735,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1733,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1728,
                                                        "src": "3656:1:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1734,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3661:1:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "3656:6:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1739,
                                                "nodeType": "IfStatement",
                                                "src": "3652:47:8",
                                                "trueBody": {
                                                    "id": 1738,
                                                    "nodeType": "Block",
                                                    "src": "3664:35:8",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "hexValue": "30",
                                                                "id": 1736,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "string",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "3685:3:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                                    "typeString": "literal_string \"0\""
                                                                },
                                                                "value": "0"
                                                            },
                                                            "functionReturnParameters": 1732,
                                                            "id": 1737,
                                                            "nodeType": "Return",
                                                            "src": "3678:10:8"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "assignments": [
                                                    1741
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1741,
                                                        "mutability": "mutable",
                                                        "name": "j",
                                                        "nameLocation": "3716:1:8",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1817,
                                                        "src": "3708:9:8",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1740,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3708:7:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1743,
                                                "initialValue": {
                                                    "id": 1742,
                                                    "name": "x",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1728,
                                                    "src": "3720:1:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3708:13:8"
                                            },
                                            {
                                                "assignments": [
                                                    1745
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1745,
                                                        "mutability": "mutable",
                                                        "name": "len",
                                                        "nameLocation": "3739:3:8",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1817,
                                                        "src": "3731:11:8",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1744,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3731:7:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1746,
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3731:11:8"
                                            },
                                            {
                                                "body": {
                                                    "id": 1757,
                                                    "nodeType": "Block",
                                                    "src": "3767:51:8",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1751,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "++",
                                                                "prefix": false,
                                                                "src": "3781:5:8",
                                                                "subExpression": {
                                                                    "id": 1750,
                                                                    "name": "len",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1745,
                                                                    "src": "3781:3:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1752,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3781:5:8"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1755,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1753,
                                                                    "name": "j",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1741,
                                                                    "src": "3800:1:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "/=",
                                                                "rightHandSide": {
                                                                    "hexValue": "3130",
                                                                    "id": 1754,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "3805:2:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_10_by_1",
                                                                        "typeString": "int_const 10"
                                                                    },
                                                                    "value": "10"
                                                                },
                                                                "src": "3800:7:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1756,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3800:7:8"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1749,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1747,
                                                        "name": "j",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1741,
                                                        "src": "3759:1:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1748,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3764:1:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "3759:6:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1758,
                                                "nodeType": "WhileStatement",
                                                "src": "3752:66:8"
                                            },
                                            {
                                                "assignments": [
                                                    1760
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1760,
                                                        "mutability": "mutable",
                                                        "name": "bstr",
                                                        "nameLocation": "3840:4:8",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1817,
                                                        "src": "3827:17:8",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1759,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3827:5:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1765,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1763,
                                                            "name": "len",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1745,
                                                            "src": "3857:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1762,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "NewExpression",
                                                        "src": "3847:9:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (uint256) pure returns (bytes memory)"
                                                        },
                                                        "typeName": {
                                                            "id": 1761,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3851:5:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        }
                                                    },
                                                    "id": 1764,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3847:14:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3827:34:8"
                                            },
                                            {
                                                "assignments": [
                                                    1767
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1767,
                                                        "mutability": "mutable",
                                                        "name": "k",
                                                        "nameLocation": "3879:1:8",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1817,
                                                        "src": "3871:9:8",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 1766,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3871:7:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1769,
                                                "initialValue": {
                                                    "id": 1768,
                                                    "name": "len",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1745,
                                                    "src": "3883:3:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "3871:15:8"
                                            },
                                            {
                                                "body": {
                                                    "id": 1813,
                                                    "nodeType": "Block",
                                                    "src": "3911:177:8",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 1777,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1773,
                                                                    "name": "k",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1767,
                                                                    "src": "3925:1:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 1776,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 1774,
                                                                        "name": "k",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1767,
                                                                        "src": "3929:1:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "-",
                                                                    "rightExpression": {
                                                                        "hexValue": "31",
                                                                        "id": 1775,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "3933:1:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_1_by_1",
                                                                            "typeString": "int_const 1"
                                                                        },
                                                                        "value": "1"
                                                                    },
                                                                    "src": "3929:5:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "3925:9:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1778,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "3925:9:8"
                                                        },
                                                        {
                                                            "assignments": [
                                                                1780
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 1780,
                                                                    "mutability": "mutable",
                                                                    "name": "temp",
                                                                    "nameLocation": "3954:4:8",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 1813,
                                                                    "src": "3948:10:8",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint8",
                                                                        "typeString": "uint8"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1779,
                                                                        "name": "uint8",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "3948:5:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 1795,
                                                            "initialValue": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        },
                                                                        "id": 1793,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "hexValue": "3438",
                                                                            "id": 1781,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "3962:2:8",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_48_by_1",
                                                                                "typeString": "int_const 48"
                                                                            },
                                                                            "value": "48"
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "+",
                                                                        "rightExpression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "id": 1791,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "id": 1784,
                                                                                        "name": "x",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 1728,
                                                                                        "src": "3973:1:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "-",
                                                                                    "rightExpression": {
                                                                                        "commonType": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "id": 1790,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                            "components": [
                                                                                                {
                                                                                                    "commonType": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    },
                                                                                                    "id": 1787,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "leftExpression": {
                                                                                                        "id": 1785,
                                                                                                        "name": "x",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 1728,
                                                                                                        "src": "3978:1:8",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_uint256",
                                                                                                            "typeString": "uint256"
                                                                                                        }
                                                                                                    },
                                                                                                    "nodeType": "BinaryOperation",
                                                                                                    "operator": "/",
                                                                                                    "rightExpression": {
                                                                                                        "hexValue": "3130",
                                                                                                        "id": 1786,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": true,
                                                                                                        "kind": "number",
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "Literal",
                                                                                                        "src": "3982:2:8",
                                                                                                        "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_rational_10_by_1",
                                                                                                            "typeString": "int_const 10"
                                                                                                        },
                                                                                                        "value": "10"
                                                                                                    },
                                                                                                    "src": "3978:6:8",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_uint256",
                                                                                                        "typeString": "uint256"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "id": 1788,
                                                                                            "isConstant": false,
                                                                                            "isInlineArray": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "TupleExpression",
                                                                                            "src": "3977:8:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "*",
                                                                                        "rightExpression": {
                                                                                            "hexValue": "3130",
                                                                                            "id": 1789,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "number",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "3988:2:8",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_10_by_1",
                                                                                                "typeString": "int_const 10"
                                                                                            },
                                                                                            "value": "10"
                                                                                        },
                                                                                        "src": "3977:13:8",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "src": "3973:17:8",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                ],
                                                                                "id": 1783,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "3967:5:8",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_uint8_$",
                                                                                    "typeString": "type(uint8)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 1782,
                                                                                    "name": "uint8",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "3967:5:8",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 1792,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "3967:24:8",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint8",
                                                                                "typeString": "uint8"
                                                                            }
                                                                        },
                                                                        "src": "3962:29:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 1794,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "3961:31:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint8",
                                                                    "typeString": "uint8"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "3948:44:8"
                                                        },
                                                        {
                                                            "assignments": [
                                                                1797
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 1797,
                                                                    "mutability": "mutable",
                                                                    "name": "b1",
                                                                    "nameLocation": "4013:2:8",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 1813,
                                                                    "src": "4006:9:8",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1796,
                                                                        "name": "bytes1",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4006:6:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes1",
                                                                            "typeString": "bytes1"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 1802,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1800,
                                                                        "name": "temp",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1780,
                                                                        "src": "4025:4:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint8",
                                                                            "typeString": "uint8"
                                                                        }
                                                                    ],
                                                                    "id": 1799,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "4018:6:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                                                        "typeString": "type(bytes1)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 1798,
                                                                        "name": "bytes1",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "4018:6:8",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 1801,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "4018:12:8",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes1",
                                                                    "typeString": "bytes1"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "4006:24:8"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1807,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 1803,
                                                                        "name": "bstr",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1760,
                                                                        "src": "4044:4:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 1805,
                                                                    "indexExpression": {
                                                                        "id": 1804,
                                                                        "name": "k",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1767,
                                                                        "src": "4049:1:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "4044:7:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 1806,
                                                                    "name": "b1",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1797,
                                                                    "src": "4054:2:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes1",
                                                                        "typeString": "bytes1"
                                                                    }
                                                                },
                                                                "src": "4044:12:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes1",
                                                                    "typeString": "bytes1"
                                                                }
                                                            },
                                                            "id": 1808,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4044:12:8"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 1811,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 1809,
                                                                    "name": "x",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1728,
                                                                    "src": "4070:1:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "/=",
                                                                "rightHandSide": {
                                                                    "hexValue": "3130",
                                                                    "id": 1810,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "4075:2:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_10_by_1",
                                                                        "typeString": "int_const 10"
                                                                    },
                                                                    "value": "10"
                                                                },
                                                                "src": "4070:7:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 1812,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "4070:7:8"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1772,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 1770,
                                                        "name": "x",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1728,
                                                        "src": "3903:1:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1771,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "3908:1:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "3903:6:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 1814,
                                                "nodeType": "WhileStatement",
                                                "src": "3896:192:8"
                                            },
                                            {
                                                "expression": {
                                                    "id": 1815,
                                                    "name": "bstr",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1760,
                                                    "src": "4104:4:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1732,
                                                "id": 1816,
                                                "nodeType": "Return",
                                                "src": "4097:11:8"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1726,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3369:195:8",
                                        "text": " @notice Converts a uint into a base-10, UTF-8 representation stored in a `string` type.\n @dev This method is based off of this code: https://stackoverflow.com/a/65707309."
                                    },
                                    "id": 1818,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "toUtf8BytesUint",
                                    "nameLocation": "3578:15:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1729,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1728,
                                                "mutability": "mutable",
                                                "name": "x",
                                                "nameLocation": "3602:1:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1818,
                                                "src": "3594:9:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1727,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3594:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3593:11:8"
                                    },
                                    "returnParameters": {
                                        "id": 1732,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1731,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1818,
                                                "src": "3628:12:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1730,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3628:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3627:14:8"
                                    },
                                    "scope": 1936,
                                    "src": "3569:546:8",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1845,
                                        "nodeType": "Block",
                                        "src": "4287:164:8",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1830
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1830,
                                                        "mutability": "mutable",
                                                        "name": "prefix",
                                                        "nameLocation": "4310:6:8",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1845,
                                                        "src": "4297:19:8",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1829,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "4297:5:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1835,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1832,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1820,
                                                            "src": "4335:20:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1833,
                                                            "name": "key",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1822,
                                                            "src": "4357:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1831,
                                                        "name": "constructPrefix",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1935,
                                                        "src": "4319:15:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1834,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4319:42:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "4297:64:8"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1838,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1820,
                                                            "src": "4395:20:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1839,
                                                            "name": "prefix",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1830,
                                                            "src": "4417:6:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1841,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1824,
                                                                    "src": "4437:5:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 1840,
                                                                "name": "toUtf8Bytes",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1692,
                                                                "src": "4425:11:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1842,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4425:18:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1836,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "4378:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 1837,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "4378:16:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1843,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "4378:66:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1828,
                                                "id": 1844,
                                                "nodeType": "Return",
                                                "src": "4371:73:8"
                                            }
                                        ]
                                    },
                                    "id": 1846,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "appendKeyValueBytes32",
                                    "nameLocation": "4130:21:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1825,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1820,
                                                "mutability": "mutable",
                                                "name": "currentAncillaryData",
                                                "nameLocation": "4174:20:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1846,
                                                "src": "4161:33:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1819,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4161:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1822,
                                                "mutability": "mutable",
                                                "name": "key",
                                                "nameLocation": "4217:3:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1846,
                                                "src": "4204:16:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1821,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4204:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1824,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "4238:5:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1846,
                                                "src": "4230:13:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 1823,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4230:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4151:98:8"
                                    },
                                    "returnParameters": {
                                        "id": 1828,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1827,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1846,
                                                "src": "4273:12:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1826,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4273:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4272:14:8"
                                    },
                                    "scope": 1936,
                                    "src": "4121:330:8",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1874,
                                        "nodeType": "Block",
                                        "src": "5350:171:8",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1859
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1859,
                                                        "mutability": "mutable",
                                                        "name": "prefix",
                                                        "nameLocation": "5373:6:8",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1874,
                                                        "src": "5360:19:8",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1858,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "5360:5:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1864,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1861,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1849,
                                                            "src": "5398:20:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1862,
                                                            "name": "key",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1851,
                                                            "src": "5420:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1860,
                                                        "name": "constructPrefix",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1935,
                                                        "src": "5382:15:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1863,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5382:42:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "5360:64:8"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1867,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1849,
                                                            "src": "5458:20:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1868,
                                                            "name": "prefix",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1859,
                                                            "src": "5480:6:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1870,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1853,
                                                                    "src": "5507:5:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 1869,
                                                                "name": "toUtf8BytesAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1725,
                                                                "src": "5488:18:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (address) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1871,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5488:25:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1865,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "5441:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 1866,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "5441:16:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1872,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "5441:73:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1857,
                                                "id": 1873,
                                                "nodeType": "Return",
                                                "src": "5434:80:8"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1847,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4457:722:8",
                                        "text": " @notice Adds \"key:value\" to `currentAncillaryData` where `value` is an address that first needs to be converted\n to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param value An address to set as the value in the key:value pair to append to `currentAncillaryData`.\n @return Newly appended ancillary data."
                                    },
                                    "id": 1875,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "appendKeyValueAddress",
                                    "nameLocation": "5193:21:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1854,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1849,
                                                "mutability": "mutable",
                                                "name": "currentAncillaryData",
                                                "nameLocation": "5237:20:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1875,
                                                "src": "5224:33:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1848,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5224:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1851,
                                                "mutability": "mutable",
                                                "name": "key",
                                                "nameLocation": "5280:3:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1875,
                                                "src": "5267:16:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1850,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5267:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1853,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "5301:5:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1875,
                                                "src": "5293:13:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 1852,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5293:7:8",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5214:98:8"
                                    },
                                    "returnParameters": {
                                        "id": 1857,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1856,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1875,
                                                "src": "5336:12:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1855,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5336:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5335:14:8"
                                    },
                                    "scope": 1936,
                                    "src": "5184:337:8",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1903,
                                        "nodeType": "Block",
                                        "src": "6409:168:8",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    1888
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 1888,
                                                        "mutability": "mutable",
                                                        "name": "prefix",
                                                        "nameLocation": "6432:6:8",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 1903,
                                                        "src": "6419:19:8",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                            "typeString": "bytes"
                                                        },
                                                        "typeName": {
                                                            "id": 1887,
                                                            "name": "bytes",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "6419:5:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                                "typeString": "bytes"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 1893,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 1890,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1878,
                                                            "src": "6457:20:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1891,
                                                            "name": "key",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1880,
                                                            "src": "6479:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 1889,
                                                        "name": "constructPrefix",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1935,
                                                        "src": "6441:15:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory,bytes memory) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1892,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6441:42:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "6419:64:8"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 1896,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1878,
                                                            "src": "6517:20:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 1897,
                                                            "name": "prefix",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1888,
                                                            "src": "6539:6:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1899,
                                                                    "name": "value",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1882,
                                                                    "src": "6563:5:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 1898,
                                                                "name": "toUtf8BytesUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1818,
                                                                "src": "6547:15:8",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 1900,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6547:22:8",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 1894,
                                                            "name": "abi",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -1,
                                                            "src": "6500:3:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_abi",
                                                                "typeString": "abi"
                                                            }
                                                        },
                                                        "id": 1895,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "memberName": "encodePacked",
                                                        "nodeType": "MemberAccess",
                                                        "src": "6500:16:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function () pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 1901,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6500:70:8",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1886,
                                                "id": 1902,
                                                "nodeType": "Return",
                                                "src": "6493:77:8"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1876,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5527:714:8",
                                        "text": " @notice Adds \"key:value\" to `currentAncillaryData` where `value` is a uint that first needs to be converted\n to utf8 bytes. For example, if `utf8(currentAncillaryData)=\"k1:v1\"`, then this function will return\n `utf8(k1:v1,key:value)`, and if `currentAncillaryData` is blank, then this will return `utf8(key:value)`.\n @param currentAncillaryData This bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param key Again, this bytes data should ideally be able to be utf8-decoded, but its OK if not.\n @param value A uint to set as the value in the key:value pair to append to `currentAncillaryData`.\n @return Newly appended ancillary data."
                                    },
                                    "id": 1904,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "appendKeyValueUint",
                                    "nameLocation": "6255:18:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1883,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1878,
                                                "mutability": "mutable",
                                                "name": "currentAncillaryData",
                                                "nameLocation": "6296:20:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1904,
                                                "src": "6283:33:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1877,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6283:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1880,
                                                "mutability": "mutable",
                                                "name": "key",
                                                "nameLocation": "6339:3:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1904,
                                                "src": "6326:16:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1879,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6326:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1882,
                                                "mutability": "mutable",
                                                "name": "value",
                                                "nameLocation": "6360:5:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1904,
                                                "src": "6352:13:8",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1881,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6352:7:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6273:98:8"
                                    },
                                    "returnParameters": {
                                        "id": 1886,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1885,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1904,
                                                "src": "6395:12:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1884,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6395:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6394:14:8"
                                    },
                                    "scope": 1936,
                                    "src": "6246:331:8",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1934,
                                        "nodeType": "Block",
                                        "src": "7043:180:8",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1917,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 1914,
                                                            "name": "currentAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1907,
                                                            "src": "7057:20:8",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        "id": 1915,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "7057:27:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 1916,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "7087:1:8",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "7057:31:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 1932,
                                                    "nodeType": "Block",
                                                    "src": "7159:58:8",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 1928,
                                                                        "name": "key",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1909,
                                                                        "src": "7197:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "3a",
                                                                        "id": 1929,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7202:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                                                            "typeString": "literal_string \":\""
                                                                        },
                                                                        "value": ":"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                                                            "typeString": "literal_string \":\""
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 1926,
                                                                        "name": "abi",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -1,
                                                                        "src": "7180:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_abi",
                                                                            "typeString": "abi"
                                                                        }
                                                                    },
                                                                    "id": 1927,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberName": "encodePacked",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7180:16:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function () pure returns (bytes memory)"
                                                                    }
                                                                },
                                                                "id": 1930,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7180:26:8",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1913,
                                                            "id": 1931,
                                                            "nodeType": "Return",
                                                            "src": "7173:33:8"
                                                        }
                                                    ]
                                                },
                                                "id": 1933,
                                                "nodeType": "IfStatement",
                                                "src": "7053:164:8",
                                                "trueBody": {
                                                    "id": 1925,
                                                    "nodeType": "Block",
                                                    "src": "7090:63:8",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "2c",
                                                                        "id": 1920,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7128:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb",
                                                                            "typeString": "literal_string \",\""
                                                                        },
                                                                        "value": ","
                                                                    },
                                                                    {
                                                                        "id": 1921,
                                                                        "name": "key",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 1909,
                                                                        "src": "7133:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    {
                                                                        "hexValue": "3a",
                                                                        "id": 1922,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "string",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "7138:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                                                            "typeString": "literal_string \":\""
                                                                        },
                                                                        "value": ":"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_3e7a35b97029f9e0cf6effd71c1a7958822e9a217d3a3aec886668a7dd8231cb",
                                                                            "typeString": "literal_string \",\""
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_stringliteral_96d280011b274d9410ea6c6fc28e2bb076b01d2fac329c49c4b29a719ec4650c",
                                                                            "typeString": "literal_string \":\""
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 1918,
                                                                        "name": "abi",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -1,
                                                                        "src": "7111:3:8",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_abi",
                                                                            "typeString": "abi"
                                                                        }
                                                                    },
                                                                    "id": 1919,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "memberName": "encodePacked",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "7111:16:8",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function () pure returns (bytes memory)"
                                                                    }
                                                                },
                                                                "id": 1923,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7111:31:8",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 1913,
                                                            "id": 1924,
                                                            "nodeType": "Return",
                                                            "src": "7104:38:8"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1905,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6583:340:8",
                                        "text": " @notice Helper method that returns the left hand side of a \"key:value\" pair plus the colon \":\" and a leading\n comma \",\" if the `currentAncillaryData` is not empty. The return value is intended to be prepended as a prefix to\n some utf8 value that is ultimately added to a comma-delimited, key-value dictionary."
                                    },
                                    "id": 1935,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "constructPrefix",
                                    "nameLocation": "6937:15:8",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1910,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1907,
                                                "mutability": "mutable",
                                                "name": "currentAncillaryData",
                                                "nameLocation": "6966:20:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1935,
                                                "src": "6953:33:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1906,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6953:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1909,
                                                "mutability": "mutable",
                                                "name": "key",
                                                "nameLocation": "7001:3:8",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1935,
                                                "src": "6988:16:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1908,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6988:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6952:53:8"
                                    },
                                    "returnParameters": {
                                        "id": 1913,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1912,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1935,
                                                "src": "7029:12:8",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 1911,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7029:5:8",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7028:14:8"
                                    },
                                    "scope": 1936,
                                    "src": "6928:295:8",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 1937,
                            "src": "663:6562:8",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:7184:8"
                },
                "id": 8
            },
            "contracts/common/implementation/FixedPoint.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/FixedPoint.sol",
                    "exportedSymbols": {
                        "FixedPoint": [
                            3569
                        ],
                        "SafeMath": [
                            1464
                        ],
                        "SignedSafeMath": [
                            1528
                        ]
                    },
                    "id": 3570,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 1938,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:9"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/math/SafeMath.sol",
                            "file": "@openzeppelin/contracts/utils/math/SafeMath.sol",
                            "id": 1939,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3570,
                            "sourceUnit": 1465,
                            "src": "67:57:9",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/math/SignedSafeMath.sol",
                            "file": "@openzeppelin/contracts/utils/math/SignedSafeMath.sol",
                            "id": 1940,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3570,
                            "sourceUnit": 1529,
                            "src": "125:63:9",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "FixedPoint",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 1941,
                                "nodeType": "StructuredDocumentation",
                                "src": "190:61:9",
                                "text": " @title Library for fixed point arithmetic on uints"
                            },
                            "fullyImplemented": true,
                            "id": 3569,
                            "linearizedBaseContracts": [
                                3569
                            ],
                            "name": "FixedPoint",
                            "nameLocation": "260:10:9",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 1944,
                                    "libraryName": {
                                        "id": 1942,
                                        "name": "SafeMath",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1464,
                                        "src": "283:8:9"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "277:27:9",
                                    "typeName": {
                                        "id": 1943,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "296:7:9",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    }
                                },
                                {
                                    "id": 1947,
                                    "libraryName": {
                                        "id": 1945,
                                        "name": "SignedSafeMath",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1528,
                                        "src": "315:14:9"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "309:32:9",
                                    "typeName": {
                                        "id": 1946,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "334:6:9",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    }
                                },
                                {
                                    "constant": true,
                                    "id": 1952,
                                    "mutability": "constant",
                                    "name": "FP_SCALING_FACTOR",
                                    "nameLocation": "599:17:9",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3569,
                                    "src": "574:51:9",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 1948,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "574:7:9",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        },
                                        "id": 1951,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 1949,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "619:2:9",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                            "hexValue": "3138",
                                            "id": 1950,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "623:2:9",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_18_by_1",
                                                "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                        },
                                        "src": "619:6:9",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "canonicalName": "FixedPoint.Unsigned",
                                    "id": 1955,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 1954,
                                            "mutability": "mutable",
                                            "name": "rawValue",
                                            "nameLocation": "800:8:9",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 1955,
                                            "src": "792:16:9",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 1953,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "792:7:9",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Unsigned",
                                    "nameLocation": "773:8:9",
                                    "nodeType": "StructDefinition",
                                    "scope": 3569,
                                    "src": "766:49:9",
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 1971,
                                        "nodeType": "Block",
                                        "src": "1121:58:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 1967,
                                                                    "name": "FP_SCALING_FACTOR",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1952,
                                                                    "src": "1153:17:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 1965,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1958,
                                                                    "src": "1147:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 1966,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1358,
                                                                "src": "1147:5:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 1968,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1147:24:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 1964,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "1138:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 1969,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1138:34:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 1963,
                                                "id": 1970,
                                                "nodeType": "Return",
                                                "src": "1131:41:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1956,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "821:218:9",
                                        "text": " @notice Constructs an `Unsigned` from an unscaled uint, e.g., `b=5` gets stored internally as `5*(10**18)`.\n @param a uint to convert into a FixedPoint.\n @return the converted FixedPoint."
                                    },
                                    "id": 1972,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "fromUnscaledUint",
                                    "nameLocation": "1053:16:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1959,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1958,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1078:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1972,
                                                "src": "1070:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1957,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1070:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1069:11:9"
                                    },
                                    "returnParameters": {
                                        "id": 1963,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1962,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1972,
                                                "src": "1104:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 1961,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1960,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1104:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1104:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1103:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "1044:135:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 1991,
                                        "nodeType": "Block",
                                        "src": "1418:66:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 1989,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 1983,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1976,
                                                            "src": "1435:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 1984,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "1435:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 1986,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1978,
                                                                    "src": "1466:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 1985,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "1449:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 1987,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1449:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 1988,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "1449:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "1435:42:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 1982,
                                                "id": 1990,
                                                "nodeType": "Return",
                                                "src": "1428:49:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1973,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1185:152:9",
                                        "text": " @notice Whether `a` is equal to `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if equal, or False."
                                    },
                                    "id": 1992,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isEqual",
                                    "nameLocation": "1351:7:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 1979,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1976,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1375:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1992,
                                                "src": "1359:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 1975,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1974,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1359:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1359:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1978,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1386:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1992,
                                                "src": "1378:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 1977,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1378:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1358:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 1982,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1981,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 1992,
                                                "src": "1412:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 1980,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1412:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1411:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "1342:142:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2010,
                                        "nodeType": "Block",
                                        "src": "1734:48:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2008,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2004,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1996,
                                                            "src": "1751:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2005,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "1751:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2006,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1999,
                                                            "src": "1765:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2007,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "1765:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "1751:24:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2003,
                                                "id": 2009,
                                                "nodeType": "Return",
                                                "src": "1744:31:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 1993,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1490:155:9",
                                        "text": " @notice Whether `a` is equal to `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if equal, or False."
                                    },
                                    "id": 2011,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isEqual",
                                    "nameLocation": "1659:7:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2000,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 1996,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1683:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2011,
                                                "src": "1667:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 1995,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1994,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1667:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1667:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 1999,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "1702:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2011,
                                                "src": "1686:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 1998,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 1997,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1686:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1686:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1666:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2003,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2002,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2011,
                                                "src": "1728:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2001,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1728:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1727:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "1650:132:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2029,
                                        "nodeType": "Block",
                                        "src": "2044:47:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2027,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2023,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2015,
                                                            "src": "2061:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2024,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "2061:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2025,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2018,
                                                            "src": "2074:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2026,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "2074:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2061:23:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2022,
                                                "id": 2028,
                                                "nodeType": "Return",
                                                "src": "2054:30:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2012,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1788:161:9",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if `a > b`, or False."
                                    },
                                    "id": 2030,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "1963:13:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2019,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2015,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "1993:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2030,
                                                "src": "1977:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2014,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2013,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1977:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1977:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2018,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2012:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2030,
                                                "src": "1996:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2017,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2016,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1996:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1996:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1976:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2022,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2021,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2030,
                                                "src": "2038:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2020,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2038:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2037:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "1954:137:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2049,
                                        "nodeType": "Block",
                                        "src": "2342:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2047,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2041,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2034,
                                                            "src": "2359:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2042,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "2359:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2044,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2036,
                                                                    "src": "2389:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2043,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "2372:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2045,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2372:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2046,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "2372:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2359:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2040,
                                                "id": 2048,
                                                "nodeType": "Return",
                                                "src": "2352:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2031,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2097:158:9",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if `a > b`, or False."
                                    },
                                    "id": 2050,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "2269:13:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2037,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2034,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2299:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2050,
                                                "src": "2283:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2033,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2032,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "2283:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "2283:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2036,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2310:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2050,
                                                "src": "2302:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2035,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2302:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2282:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2040,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2039,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2050,
                                                "src": "2336:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2038,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2336:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2335:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "2260:147:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2069,
                                        "nodeType": "Block",
                                        "src": "2658:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2067,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2062,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2053,
                                                                    "src": "2692:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2061,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "2675:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2063,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2675:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2064,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "2675:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2065,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2056,
                                                            "src": "2706:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2066,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "2706:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "2675:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2060,
                                                "id": 2068,
                                                "nodeType": "Return",
                                                "src": "2668:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2051,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2413:158:9",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a uint256.\n @param b a FixedPoint.\n @return True if `a > b`, or False."
                                    },
                                    "id": 2070,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "2585:13:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2057,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2053,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2607:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2070,
                                                "src": "2599:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2052,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2599:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2056,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2626:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2070,
                                                "src": "2610:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2055,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2054,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "2610:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "2610:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2598:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2060,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2059,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2070,
                                                "src": "2652:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2058,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2652:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2651:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "2576:147:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2088,
                                        "nodeType": "Block",
                                        "src": "3005:48:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2086,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2082,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2074,
                                                            "src": "3022:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2083,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "3022:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2084,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2077,
                                                            "src": "3036:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2085,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "3036:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3022:24:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2081,
                                                "id": 2087,
                                                "nodeType": "Return",
                                                "src": "3015:31:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2071,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2729:174:9",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 2089,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "2917:20:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2078,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2074,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "2954:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2089,
                                                "src": "2938:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2073,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2072,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "2938:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "2938:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2077,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "2973:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2089,
                                                "src": "2957:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2076,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2075,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "2957:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "2957:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2937:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2081,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2080,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2089,
                                                "src": "2999:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2079,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2999:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2998:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "2908:145:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2108,
                                        "nodeType": "Block",
                                        "src": "3324:66:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2106,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2100,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2093,
                                                            "src": "3341:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2101,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "3341:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2103,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2095,
                                                                    "src": "3372:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2102,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "3355:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2104,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3355:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2105,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "3355:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3341:42:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2099,
                                                "id": 2107,
                                                "nodeType": "Return",
                                                "src": "3334:49:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2090,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3059:171:9",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 2109,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "3244:20:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2096,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2093,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3281:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2109,
                                                "src": "3265:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2092,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2091,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "3265:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "3265:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2095,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3292:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2109,
                                                "src": "3284:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2094,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3284:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3264:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2099,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2098,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2109,
                                                "src": "3318:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2097,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3318:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3317:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "3235:155:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2128,
                                        "nodeType": "Block",
                                        "src": "3661:66:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2126,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2121,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2112,
                                                                    "src": "3695:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2120,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "3678:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2122,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "3678:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2123,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "3678:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2124,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2115,
                                                            "src": "3710:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2125,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "3710:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "3678:42:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2119,
                                                "id": 2127,
                                                "nodeType": "Return",
                                                "src": "3671:49:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2110,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3396:171:9",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a uint256.\n @param b a FixedPoint.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 2129,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "3581:20:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2116,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2112,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3610:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2129,
                                                "src": "3602:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2111,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3602:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2115,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3629:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2129,
                                                "src": "3613:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2114,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2113,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "3613:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "3613:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3601:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2119,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2118,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2129,
                                                "src": "3655:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2117,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3655:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3654:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "3572:155:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2147,
                                        "nodeType": "Block",
                                        "src": "3983:47:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2145,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2141,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2133,
                                                            "src": "4000:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2142,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "4000:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2143,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2136,
                                                            "src": "4013:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2144,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "4013:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4000:23:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2140,
                                                "id": 2146,
                                                "nodeType": "Return",
                                                "src": "3993:30:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2130,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3733:158:9",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if `a < b`, or False."
                                    },
                                    "id": 2148,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "3905:10:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2137,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2133,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "3932:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2148,
                                                "src": "3916:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2132,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2131,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "3916:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "3916:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2136,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "3951:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2148,
                                                "src": "3935:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2135,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2134,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "3935:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "3935:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3915:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2140,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2139,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2148,
                                                "src": "3977:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2138,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3977:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3976:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "3896:134:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2167,
                                        "nodeType": "Block",
                                        "src": "4275:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2165,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2159,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2152,
                                                            "src": "4292:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2160,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "4292:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2162,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2154,
                                                                    "src": "4322:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2161,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "4305:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2163,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4305:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2164,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "4305:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4292:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2158,
                                                "id": 2166,
                                                "nodeType": "Return",
                                                "src": "4285:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2149,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4036:155:9",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if `a < b`, or False."
                                    },
                                    "id": 2168,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "4205:10:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2155,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2152,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4232:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2168,
                                                "src": "4216:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2151,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2150,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "4216:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "4216:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2154,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4243:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2168,
                                                "src": "4235:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2153,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4235:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4215:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2158,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2157,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2168,
                                                "src": "4269:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2156,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4269:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4268:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "4196:144:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2187,
                                        "nodeType": "Block",
                                        "src": "4585:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2185,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2180,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2171,
                                                                    "src": "4619:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2179,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "4602:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2181,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "4602:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2182,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "4602:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2183,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2174,
                                                            "src": "4633:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2184,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "4633:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4602:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2178,
                                                "id": 2186,
                                                "nodeType": "Return",
                                                "src": "4595:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2169,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4346:155:9",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a uint256.\n @param b a FixedPoint.\n @return True if `a < b`, or False."
                                    },
                                    "id": 2188,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "4515:10:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2175,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2171,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4534:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2188,
                                                "src": "4526:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2170,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4526:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2174,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4553:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2188,
                                                "src": "4537:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2173,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2172,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "4537:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "4537:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4525:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2178,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2177,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2188,
                                                "src": "4579:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2176,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4579:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4578:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "4506:144:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2206,
                                        "nodeType": "Block",
                                        "src": "4926:48:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2204,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2200,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2192,
                                                            "src": "4943:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2201,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "4943:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2202,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2195,
                                                            "src": "4957:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2203,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "4957:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "4943:24:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2199,
                                                "id": 2205,
                                                "nodeType": "Return",
                                                "src": "4936:31:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2189,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4656:171:9",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 2207,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "4841:17:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2196,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2192,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "4875:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2207,
                                                "src": "4859:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2191,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2190,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "4859:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "4859:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2195,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "4894:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2207,
                                                "src": "4878:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2194,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2193,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "4878:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "4878:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4858:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2199,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2198,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2207,
                                                "src": "4920:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2197,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4920:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4919:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "4832:142:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2226,
                                        "nodeType": "Block",
                                        "src": "5239:66:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2224,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2218,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2211,
                                                            "src": "5256:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2219,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "5256:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2221,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2213,
                                                                    "src": "5287:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2220,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "5270:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2222,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5270:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2223,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "5270:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5256:42:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2217,
                                                "id": 2225,
                                                "nodeType": "Return",
                                                "src": "5249:49:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2208,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4980:168:9",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a FixedPoint.\n @param b a uint256.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 2227,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "5162:17:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2214,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2211,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "5196:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2227,
                                                "src": "5180:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2210,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2209,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "5180:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "5180:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2213,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "5207:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2227,
                                                "src": "5199:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2212,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5199:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5179:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2217,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2216,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2227,
                                                "src": "5233:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2215,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5233:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5232:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "5153:152:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2246,
                                        "nodeType": "Block",
                                        "src": "5570:66:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2244,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2239,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2230,
                                                                    "src": "5604:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2238,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "5587:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2240,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "5587:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2241,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "5587:28:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2242,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2233,
                                                            "src": "5619:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 2243,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "5619:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "5587:42:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2237,
                                                "id": 2245,
                                                "nodeType": "Return",
                                                "src": "5580:49:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2228,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5311:168:9",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a uint256.\n @param b a FixedPoint.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 2247,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "5493:17:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2234,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2230,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "5519:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2247,
                                                "src": "5511:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2229,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5511:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2233,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "5538:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2247,
                                                "src": "5522:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2232,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2231,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "5522:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "5522:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5510:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2237,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2236,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2247,
                                                "src": "5564:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2235,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5564:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5563:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "5484:152:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2269,
                                        "nodeType": "Block",
                                        "src": "5895:55:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 2264,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 2260,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2251,
                                                                "src": "5912:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2261,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "5912:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 2262,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2254,
                                                                "src": "5925:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2263,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "5925:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "5912:23:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 2266,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2254,
                                                        "src": "5942:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "id": 2267,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "5912:31:9",
                                                    "trueExpression": {
                                                        "id": 2265,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2251,
                                                        "src": "5938:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2259,
                                                "id": 2268,
                                                "nodeType": "Return",
                                                "src": "5905:38:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2248,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5642:157:9",
                                        "text": " @notice The minimum of `a` and `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the minimum of `a` and `b`."
                                    },
                                    "id": 2270,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "min",
                                    "nameLocation": "5813:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2255,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2251,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "5833:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2270,
                                                "src": "5817:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2250,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2249,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "5817:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "5817:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2254,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "5852:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2270,
                                                "src": "5836:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2253,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2252,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "5836:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "5836:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5816:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2259,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2258,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2270,
                                                "src": "5878:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2257,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2256,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "5878:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "5878:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5877:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "5804:146:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2292,
                                        "nodeType": "Block",
                                        "src": "6209:55:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 2287,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 2283,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2274,
                                                                "src": "6226:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2284,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "6226:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 2285,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2277,
                                                                "src": "6239:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2286,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "6239:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "6226:23:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 2289,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2277,
                                                        "src": "6256:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "id": 2290,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "6226:31:9",
                                                    "trueExpression": {
                                                        "id": 2288,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2274,
                                                        "src": "6252:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2282,
                                                "id": 2291,
                                                "nodeType": "Return",
                                                "src": "6219:38:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2271,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5956:157:9",
                                        "text": " @notice The maximum of `a` and `b`.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the maximum of `a` and `b`."
                                    },
                                    "id": 2293,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "max",
                                    "nameLocation": "6127:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2278,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2274,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "6147:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2293,
                                                "src": "6131:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2273,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2272,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "6131:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "6131:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2277,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "6166:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2293,
                                                "src": "6150:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2276,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2275,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "6150:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "6150:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6130:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2282,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2281,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2293,
                                                "src": "6192:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2280,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2279,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "6192:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "6192:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6191:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "6118:146:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2315,
                                        "nodeType": "Block",
                                        "src": "6536:60:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 2310,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2300,
                                                                        "src": "6577:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2311,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "6577:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 2307,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2297,
                                                                        "src": "6562:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2308,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "6562:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 2309,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "add",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1328,
                                                                "src": "6562:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 2312,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6562:26:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2306,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "6553:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 2313,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6553:36:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2305,
                                                "id": 2314,
                                                "nodeType": "Return",
                                                "src": "6546:43:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2294,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6270:170:9",
                                        "text": " @notice Adds two `Unsigned`s, reverting on overflow.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the sum of `a` and `b`."
                                    },
                                    "id": 2316,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "6454:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2301,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2297,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "6474:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2316,
                                                "src": "6458:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2296,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2295,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "6458:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "6458:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2300,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "6493:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2316,
                                                "src": "6477:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2299,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2298,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "6477:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "6477:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6457:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2305,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2304,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2316,
                                                "src": "6519:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2303,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2302,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "6519:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "6519:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6518:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "6445:151:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2335,
                                        "nodeType": "Block",
                                        "src": "6875:51:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2329,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2320,
                                                            "src": "6896:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2331,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2322,
                                                                    "src": "6916:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2330,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "6899:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2332,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "6899:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 2328,
                                                        "name": "add",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2316,
                                                            2336,
                                                            3131,
                                                            3151
                                                        ],
                                                        "referencedDeclaration": 2316,
                                                        "src": "6892:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$1955_memory_ptr_$_t_struct$_Unsigned_$1955_memory_ptr_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 2333,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "6892:27:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2327,
                                                "id": 2334,
                                                "nodeType": "Return",
                                                "src": "6885:34:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2317,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6602:185:9",
                                        "text": " @notice Adds an `Unsigned` to an unscaled uint, reverting on overflow.\n @param a a FixedPoint.\n @param b a uint256.\n @return the sum of `a` and `b`."
                                    },
                                    "id": 2336,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "6801:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2323,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2320,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "6821:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2336,
                                                "src": "6805:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2319,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2318,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "6805:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "6805:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2322,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "6832:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2336,
                                                "src": "6824:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2321,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6824:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6804:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2327,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2326,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2336,
                                                "src": "6858:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2325,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2324,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "6858:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "6858:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6857:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "6792:134:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2358,
                                        "nodeType": "Block",
                                        "src": "7210:60:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 2353,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2343,
                                                                        "src": "7251:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2354,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "7251:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 2350,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2340,
                                                                        "src": "7236:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2351,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "7236:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 2352,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1343,
                                                                "src": "7236:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 2355,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7236:26:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2349,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "7227:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 2356,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7227:36:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2348,
                                                "id": 2357,
                                                "nodeType": "Return",
                                                "src": "7220:43:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2337,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6932:182:9",
                                        "text": " @notice Subtracts two `Unsigned`s, reverting on overflow.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 2359,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "7128:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2344,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2340,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "7148:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2359,
                                                "src": "7132:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2339,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2338,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "7132:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "7132:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2343,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "7167:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2359,
                                                "src": "7151:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2342,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2341,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "7151:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "7151:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7131:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2348,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2347,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2359,
                                                "src": "7193:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2346,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2345,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "7193:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "7193:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7192:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "7119:151:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2378,
                                        "nodeType": "Block",
                                        "src": "7566:51:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2372,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2363,
                                                            "src": "7587:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2374,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2365,
                                                                    "src": "7607:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2373,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "7590:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2375,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7590:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 2371,
                                                        "name": "sub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2359,
                                                            2379,
                                                            2399,
                                                            3174,
                                                            3194,
                                                            3214
                                                        ],
                                                        "referencedDeclaration": 2359,
                                                        "src": "7583:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$1955_memory_ptr_$_t_struct$_Unsigned_$1955_memory_ptr_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 2376,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7583:27:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2370,
                                                "id": 2377,
                                                "nodeType": "Return",
                                                "src": "7576:34:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2360,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7276:202:9",
                                        "text": " @notice Subtracts an unscaled uint256 from an `Unsigned`, reverting on overflow.\n @param a a FixedPoint.\n @param b a uint256.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 2379,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "7492:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2366,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2363,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "7512:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2379,
                                                "src": "7496:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2362,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2361,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "7496:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "7496:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2365,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "7523:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2379,
                                                "src": "7515:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2364,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7515:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7495:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2370,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2369,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2379,
                                                "src": "7549:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2368,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2367,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "7549:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "7549:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7548:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "7483:134:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2398,
                                        "nodeType": "Block",
                                        "src": "7913:51:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2393,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2382,
                                                                    "src": "7951:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2392,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "7934:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2394,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "7934:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 2395,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2385,
                                                            "src": "7955:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 2391,
                                                        "name": "sub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2359,
                                                            2379,
                                                            2399,
                                                            3174,
                                                            3194,
                                                            3214
                                                        ],
                                                        "referencedDeclaration": 2359,
                                                        "src": "7930:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$1955_memory_ptr_$_t_struct$_Unsigned_$1955_memory_ptr_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 2396,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7930:27:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2390,
                                                "id": 2397,
                                                "nodeType": "Return",
                                                "src": "7923:34:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2380,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7623:202:9",
                                        "text": " @notice Subtracts an `Unsigned` from an unscaled uint256, reverting on overflow.\n @param a a uint256.\n @param b a FixedPoint.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 2399,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "7839:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2386,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2382,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "7851:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2399,
                                                "src": "7843:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2381,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7843:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2385,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "7870:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2399,
                                                "src": "7854:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2384,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2383,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "7854:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "7854:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7842:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2390,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2389,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2399,
                                                "src": "7896:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2388,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2387,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "7896:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "7896:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7895:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "7830:134:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2423,
                                        "nodeType": "Block",
                                        "src": "8289:559:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2420,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 2416,
                                                                            "name": "b",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2406,
                                                                            "src": "8809:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        },
                                                                        "id": 2417,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "rawValue",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1954,
                                                                        "src": "8809:10:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 2413,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2403,
                                                                            "src": "8794:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        },
                                                                        "id": 2414,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "rawValue",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1954,
                                                                        "src": "8794:10:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "id": 2415,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "mul",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1358,
                                                                    "src": "8794:14:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 2418,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "8794:26:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "id": 2419,
                                                                "name": "FP_SCALING_FACTOR",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1952,
                                                                "src": "8823:17:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "8794:46:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2412,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "8785:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 2421,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8785:56:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2411,
                                                "id": 2422,
                                                "nodeType": "Return",
                                                "src": "8778:63:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2400,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7970:223:9",
                                        "text": " @notice Multiplies two `Unsigned`s, reverting on overflow.\n @dev This will \"floor\" the product.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the product of `a` and `b`."
                                    },
                                    "id": 2424,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "8207:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2407,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2403,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "8227:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2424,
                                                "src": "8211:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2402,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2401,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "8211:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "8211:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2406,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "8246:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2424,
                                                "src": "8230:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2405,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2404,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "8230:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "8230:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8210:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2411,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2410,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2424,
                                                "src": "8272:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2409,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2408,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "8272:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "8272:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8271:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "8198:650:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2444,
                                        "nodeType": "Block",
                                        "src": "9184:51:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2440,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2430,
                                                                    "src": "9225:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 2437,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2428,
                                                                        "src": "9210:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2438,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "9210:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 2439,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1358,
                                                                "src": "9210:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 2441,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "9210:17:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2436,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "9201:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 2442,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9201:27:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2435,
                                                "id": 2443,
                                                "nodeType": "Return",
                                                "src": "9194:34:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2425,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8854:242:9",
                                        "text": " @notice Multiplies an `Unsigned` and an unscaled uint256, reverting on overflow.\n @dev This will \"floor\" the product.\n @param a a FixedPoint.\n @param b a uint256.\n @return the product of `a` and `b`."
                                    },
                                    "id": 2445,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "9110:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2431,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2428,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "9130:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2445,
                                                "src": "9114:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2427,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2426,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "9114:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "9114:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2430,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "9141:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2445,
                                                "src": "9133:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2429,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9133:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9113:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2435,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2434,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2445,
                                                "src": "9167:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2433,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2432,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "9167:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "9167:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9166:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "9101:134:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2497,
                                        "nodeType": "Block",
                                        "src": "9546:304:9",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    2459
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2459,
                                                        "mutability": "mutable",
                                                        "name": "mulRaw",
                                                        "nameLocation": "9564:6:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2497,
                                                        "src": "9556:14:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2458,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9556:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2466,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 2463,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2452,
                                                                "src": "9588:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2464,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "9588:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "expression": {
                                                                "id": 2460,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2449,
                                                                "src": "9573:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2461,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "9573:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2462,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1358,
                                                        "src": "9573:14:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 2465,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9573:26:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9556:43:9"
                                            },
                                            {
                                                "assignments": [
                                                    2468
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2468,
                                                        "mutability": "mutable",
                                                        "name": "mulFloor",
                                                        "nameLocation": "9617:8:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2497,
                                                        "src": "9609:16:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2467,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9609:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2472,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2471,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2469,
                                                        "name": "mulRaw",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2459,
                                                        "src": "9628:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 2470,
                                                        "name": "FP_SCALING_FACTOR",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1952,
                                                        "src": "9637:17:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "9628:26:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9609:45:9"
                                            },
                                            {
                                                "assignments": [
                                                    2474
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2474,
                                                        "mutability": "mutable",
                                                        "name": "mod",
                                                        "nameLocation": "9672:3:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2497,
                                                        "src": "9664:11:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2473,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "9664:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2479,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 2477,
                                                            "name": "FP_SCALING_FACTOR",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1952,
                                                            "src": "9689:17:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2475,
                                                            "name": "mulRaw",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2459,
                                                            "src": "9678:6:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2476,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mod",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1388,
                                                        "src": "9678:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 2478,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9678:29:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "9664:43:9"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2482,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2480,
                                                        "name": "mod",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2474,
                                                        "src": "9721:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 2481,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "9728:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "9721:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 2495,
                                                    "nodeType": "Block",
                                                    "src": "9794:50:9",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 2492,
                                                                        "name": "mulFloor",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2468,
                                                                        "src": "9824:8:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 2491,
                                                                    "name": "Unsigned",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1955,
                                                                    "src": "9815:8:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                                    }
                                                                },
                                                                "id": 2493,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9815:18:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2457,
                                                            "id": 2494,
                                                            "nodeType": "Return",
                                                            "src": "9808:25:9"
                                                        }
                                                    ]
                                                },
                                                "id": 2496,
                                                "nodeType": "IfStatement",
                                                "src": "9717:127:9",
                                                "trueBody": {
                                                    "id": 2490,
                                                    "nodeType": "Block",
                                                    "src": "9731:57:9",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "hexValue": "31",
                                                                                "id": 2486,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "9774:1:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 2484,
                                                                                "name": "mulFloor",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2468,
                                                                                "src": "9761:8:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 2485,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "add",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 1328,
                                                                            "src": "9761:12:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 2487,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "9761:15:9",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 2483,
                                                                    "name": "Unsigned",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1955,
                                                                    "src": "9752:8:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                                    }
                                                                },
                                                                "id": 2488,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9752:25:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2457,
                                                            "id": 2489,
                                                            "nodeType": "Return",
                                                            "src": "9745:32:9"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2446,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9241:205:9",
                                        "text": " @notice Multiplies two `Unsigned`s and \"ceil's\" the product, reverting on overflow.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the product of `a` and `b`."
                                    },
                                    "id": 2498,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mulCeil",
                                    "nameLocation": "9460:7:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2453,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2449,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "9484:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2498,
                                                "src": "9468:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2448,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2447,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "9468:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "9468:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2452,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "9503:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2498,
                                                "src": "9487:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2451,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2450,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "9487:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "9487:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9467:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2457,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2456,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2498,
                                                "src": "9529:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2455,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2454,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "9529:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "9529:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9528:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "9451:399:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2518,
                                        "nodeType": "Block",
                                        "src": "10175:145:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2514,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2504,
                                                                    "src": "10310:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 2511,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2502,
                                                                        "src": "10295:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2512,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "10295:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 2513,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1358,
                                                                "src": "10295:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 2515,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "10295:17:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2510,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "10286:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 2516,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "10286:27:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2509,
                                                "id": 2517,
                                                "nodeType": "Return",
                                                "src": "10279:34:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2499,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9856:227:9",
                                        "text": " @notice Multiplies an `Unsigned` and an unscaled uint256 and \"ceil's\" the product, reverting on overflow.\n @param a a FixedPoint.\n @param b a FixedPoint.\n @return the product of `a` and `b`."
                                    },
                                    "id": 2519,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mulCeil",
                                    "nameLocation": "10097:7:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2505,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2502,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "10121:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2519,
                                                "src": "10105:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2501,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2500,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "10105:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "10105:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2504,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "10132:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2519,
                                                "src": "10124:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2503,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10124:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10104:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2509,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2508,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2519,
                                                "src": "10158:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2507,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2506,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "10158:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "10158:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10157:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "10088:232:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2544,
                                        "nodeType": "Block",
                                        "src": "10706:543:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 2539,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2526,
                                                                        "src": "11230:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2540,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "11230:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 2536,
                                                                            "name": "FP_SCALING_FACTOR",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 1952,
                                                                            "src": "11207:17:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "expression": {
                                                                                "id": 2533,
                                                                                "name": "a",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2523,
                                                                                "src": "11192:1:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                                }
                                                                            },
                                                                            "id": 2534,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "rawValue",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 1954,
                                                                            "src": "11192:10:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "id": 2535,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "mul",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1358,
                                                                        "src": "11192:14:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 2537,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "11192:33:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 2538,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "div",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1373,
                                                                "src": "11192:37:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 2541,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11192:49:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2532,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "11183:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 2542,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11183:59:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2531,
                                                "id": 2543,
                                                "nodeType": "Return",
                                                "src": "11176:66:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2520,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10326:284:9",
                                        "text": " @notice Divides one `Unsigned` by an `Unsigned`, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a FixedPoint numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 2545,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "10624:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2527,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2523,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "10644:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2545,
                                                "src": "10628:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2522,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2521,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "10628:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "10628:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2526,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "10663:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2545,
                                                "src": "10647:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2525,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2524,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "10647:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "10647:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10627:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2531,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2530,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2545,
                                                "src": "10689:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2529,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2528,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "10689:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "10689:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10688:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "10615:634:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2565,
                                        "nodeType": "Block",
                                        "src": "11630:51:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2561,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2551,
                                                                    "src": "11671:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 2558,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2549,
                                                                        "src": "11656:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2559,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "11656:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 2560,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "div",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1373,
                                                                "src": "11656:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 2562,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "11656:17:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2557,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "11647:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 2563,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11647:27:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2556,
                                                "id": 2564,
                                                "nodeType": "Return",
                                                "src": "11640:34:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2546,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11255:287:9",
                                        "text": " @notice Divides one `Unsigned` by an unscaled uint256, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a FixedPoint numerator.\n @param b a uint256 denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 2566,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "11556:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2552,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2549,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "11576:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2566,
                                                "src": "11560:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2548,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2547,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "11560:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "11560:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2551,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "11587:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2566,
                                                "src": "11579:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2550,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11579:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11559:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2556,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2555,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2566,
                                                "src": "11613:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2554,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2553,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "11613:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "11613:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11612:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "11547:134:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2585,
                                        "nodeType": "Block",
                                        "src": "12062:51:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2580,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2569,
                                                                    "src": "12100:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2579,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "12083:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2581,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "12083:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 2582,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2572,
                                                            "src": "12104:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 2578,
                                                        "name": "div",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2545,
                                                            2566,
                                                            2586,
                                                            3385,
                                                            3406,
                                                            3426
                                                        ],
                                                        "referencedDeclaration": 2545,
                                                        "src": "12079:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$1955_memory_ptr_$_t_struct$_Unsigned_$1955_memory_ptr_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 2583,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12079:27:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2577,
                                                "id": 2584,
                                                "nodeType": "Return",
                                                "src": "12072:34:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2567,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11687:287:9",
                                        "text": " @notice Divides one unscaled uint256 by an `Unsigned`, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a uint256 numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 2586,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "11988:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2573,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2569,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "12000:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2586,
                                                "src": "11992:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2568,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11992:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2572,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "12019:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2586,
                                                "src": "12003:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2571,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2570,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "12003:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "12003:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11991:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2577,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2576,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2586,
                                                "src": "12045:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2575,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2574,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "12045:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "12045:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12044:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "11979:134:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2640,
                                        "nodeType": "Block",
                                        "src": "12485:303:9",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    2600
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2600,
                                                        "mutability": "mutable",
                                                        "name": "aScaled",
                                                        "nameLocation": "12503:7:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2640,
                                                        "src": "12495:15:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2599,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12495:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2606,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 2604,
                                                            "name": "FP_SCALING_FACTOR",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1952,
                                                            "src": "12528:17:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "expression": {
                                                                "id": 2601,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2590,
                                                                "src": "12513:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2602,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "12513:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2603,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1358,
                                                        "src": "12513:14:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 2605,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12513:33:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12495:51:9"
                                            },
                                            {
                                                "assignments": [
                                                    2608
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2608,
                                                        "mutability": "mutable",
                                                        "name": "divFloor",
                                                        "nameLocation": "12564:8:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2640,
                                                        "src": "12556:16:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2607,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12556:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2614,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 2611,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2593,
                                                                "src": "12587:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2612,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "12587:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2609,
                                                            "name": "aScaled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2600,
                                                            "src": "12575:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2610,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "div",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1373,
                                                        "src": "12575:11:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 2613,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12575:23:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12556:42:9"
                                            },
                                            {
                                                "assignments": [
                                                    2616
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 2616,
                                                        "mutability": "mutable",
                                                        "name": "mod",
                                                        "nameLocation": "12616:3:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 2640,
                                                        "src": "12608:11:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 2615,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12608:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 2622,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 2619,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2593,
                                                                "src": "12634:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2620,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 1954,
                                                            "src": "12634:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 2617,
                                                            "name": "aScaled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2600,
                                                            "src": "12622:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "id": 2618,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mod",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1388,
                                                        "src": "12622:11:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 2621,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12622:23:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12608:37:9"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2625,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2623,
                                                        "name": "mod",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2616,
                                                        "src": "12659:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 2624,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "12666:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "12659:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 2638,
                                                    "nodeType": "Block",
                                                    "src": "12732:50:9",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 2635,
                                                                        "name": "divFloor",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2608,
                                                                        "src": "12762:8:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 2634,
                                                                    "name": "Unsigned",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1955,
                                                                    "src": "12753:8:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                                    }
                                                                },
                                                                "id": 2636,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "12753:18:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2598,
                                                            "id": 2637,
                                                            "nodeType": "Return",
                                                            "src": "12746:25:9"
                                                        }
                                                    ]
                                                },
                                                "id": 2639,
                                                "nodeType": "IfStatement",
                                                "src": "12655:127:9",
                                                "trueBody": {
                                                    "id": 2633,
                                                    "nodeType": "Block",
                                                    "src": "12669:57:9",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "hexValue": "31",
                                                                                "id": 2629,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "12712:1:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 2627,
                                                                                "name": "divFloor",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 2608,
                                                                                "src": "12699:8:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "id": 2628,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "add",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 1328,
                                                                            "src": "12699:12:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 2630,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "12699:15:9",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 2626,
                                                                    "name": "Unsigned",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 1955,
                                                                    "src": "12690:8:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                                    }
                                                                },
                                                                "id": 2631,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "12690:25:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 2598,
                                                            "id": 2632,
                                                            "nodeType": "Return",
                                                            "src": "12683:32:9"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2587,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "12119:266:9",
                                        "text": " @notice Divides one `Unsigned` by an `Unsigned` and \"ceil's\" the quotient, reverting on overflow or division by 0.\n @param a a FixedPoint numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 2641,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "divCeil",
                                    "nameLocation": "12399:7:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2594,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2590,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "12423:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2641,
                                                "src": "12407:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2589,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2588,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "12407:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "12407:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2593,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "12442:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2641,
                                                "src": "12426:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2592,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2591,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "12426:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "12426:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12406:38:9"
                                    },
                                    "returnParameters": {
                                        "id": 2598,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2597,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2641,
                                                "src": "12468:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2596,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2595,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "12468:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "12468:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12467:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "12390:398:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2660,
                                        "nodeType": "Block",
                                        "src": "13155:363:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 2654,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2645,
                                                            "src": "13488:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2656,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2647,
                                                                    "src": "13508:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2655,
                                                                "name": "fromUnscaledUint",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 1972,
                                                                "src": "13491:16:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 2657,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13491:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        ],
                                                        "id": 2653,
                                                        "name": "divCeil",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2641,
                                                            2661
                                                        ],
                                                        "referencedDeclaration": 2641,
                                                        "src": "13480:7:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$1955_memory_ptr_$_t_struct$_Unsigned_$1955_memory_ptr_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                        }
                                                    },
                                                    "id": 2658,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13480:31:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2652,
                                                "id": 2659,
                                                "nodeType": "Return",
                                                "src": "13473:38:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2642,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "12794:269:9",
                                        "text": " @notice Divides one `Unsigned` by an unscaled uint256 and \"ceil's\" the quotient, reverting on overflow or division by 0.\n @param a a FixedPoint numerator.\n @param b a uint256 denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 2661,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "divCeil",
                                    "nameLocation": "13077:7:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2648,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2645,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "13101:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2661,
                                                "src": "13085:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2644,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2643,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "13085:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "13085:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2647,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "13112:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2661,
                                                "src": "13104:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2646,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13104:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13084:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2652,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2651,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2661,
                                                "src": "13138:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2650,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2649,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "13138:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "13138:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13137:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "13068:450:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2702,
                                        "nodeType": "Block",
                                        "src": "13922:143:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 2677,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 2673,
                                                        "name": "output",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2671,
                                                        "src": "13932:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "31",
                                                                "id": 2675,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "13958:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                }
                                                            ],
                                                            "id": 2674,
                                                            "name": "fromUnscaledUint",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1972,
                                                            "src": "13941:16:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                "typeString": "function (uint256) pure returns (struct FixedPoint.Unsigned memory)"
                                                            }
                                                        },
                                                        "id": 2676,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "13941:19:9",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                        }
                                                    },
                                                    "src": "13932:28:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "id": 2678,
                                                "nodeType": "ExpressionStatement",
                                                "src": "13932:28:9"
                                            },
                                            {
                                                "body": {
                                                    "id": 2700,
                                                    "nodeType": "Block",
                                                    "src": "14011:48:9",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 2698,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 2693,
                                                                    "name": "output",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2671,
                                                                    "src": "14025:6:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 2695,
                                                                            "name": "output",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2671,
                                                                            "src": "14038:6:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 2696,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2665,
                                                                            "src": "14046:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                                            }
                                                                        ],
                                                                        "id": 2694,
                                                                        "name": "mul",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            2424,
                                                                            2445,
                                                                            3239,
                                                                            3260
                                                                        ],
                                                                        "referencedDeclaration": 2424,
                                                                        "src": "14034:3:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Unsigned_$1955_memory_ptr_$_t_struct$_Unsigned_$1955_memory_ptr_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                            "typeString": "function (struct FixedPoint.Unsigned memory,struct FixedPoint.Unsigned memory) pure returns (struct FixedPoint.Unsigned memory)"
                                                                        }
                                                                    },
                                                                    "id": 2697,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "14034:14:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                                    }
                                                                },
                                                                "src": "14025:23:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Unsigned memory"
                                                                }
                                                            },
                                                            "id": 2699,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "14025:23:9"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 2685,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 2683,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2680,
                                                        "src": "13990:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 2684,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2667,
                                                        "src": "13994:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "13990:5:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 2701,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        2680
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 2680,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "13983:1:9",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 2701,
                                                            "src": "13975:9:9",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 2679,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "13975:7:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 2682,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 2681,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "13987:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "13975:13:9"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 2691,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "id": 2686,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2680,
                                                            "src": "13997:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "31",
                                                                    "id": 2689,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "14007:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 2687,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2680,
                                                                    "src": "14001:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 2688,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "add",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1328,
                                                                "src": "14001:5:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 2690,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14001:8:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "13997:12:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 2692,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "13997:12:9"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "13970:89:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2662,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "13524:303:9",
                                        "text": " @notice Raises an `Unsigned` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\n @dev This will \"floor\" the result.\n @param a a FixedPoint numerator.\n @param b a uint256 denominator.\n @return output is `a` to the power of `b`."
                                    },
                                    "id": 2703,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "pow",
                                    "nameLocation": "13841:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2668,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2665,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "13861:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2703,
                                                "src": "13845:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2664,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2663,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "13845:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "13845:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2667,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "13872:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2703,
                                                "src": "13864:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 2666,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13864:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13844:30:9"
                                    },
                                    "returnParameters": {
                                        "id": 2672,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2671,
                                                "mutability": "mutable",
                                                "name": "output",
                                                "nameLocation": "13914:6:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2703,
                                                "src": "13898:22:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2670,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2669,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "13898:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "13898:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13897:24:9"
                                    },
                                    "scope": 3569,
                                    "src": "13832:233:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "constant": true,
                                    "id": 2708,
                                    "mutability": "constant",
                                    "name": "SFP_SCALING_FACTOR",
                                    "nameLocation": "14457:18:9",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3569,
                                    "src": "14433:51:9",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 2704,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14433:6:9",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "value": {
                                        "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        },
                                        "id": 2707,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 2705,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14478:2:9",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "**",
                                        "rightExpression": {
                                            "hexValue": "3138",
                                            "id": 2706,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "14482:2:9",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_18_by_1",
                                                "typeString": "int_const 18"
                                            },
                                            "value": "18"
                                        },
                                        "src": "14478:6:9",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000000"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "canonicalName": "FixedPoint.Signed",
                                    "id": 2711,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 2710,
                                            "mutability": "mutable",
                                            "name": "rawValue",
                                            "nameLocation": "14522:8:9",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 2711,
                                            "src": "14515:15:9",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 2709,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "14515:6:9",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Signed",
                                    "nameLocation": "14498:6:9",
                                    "nodeType": "StructDefinition",
                                    "scope": 3569,
                                    "src": "14491:46:9",
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 2736,
                                        "nodeType": "Block",
                                        "src": "14620:114:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 2724,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 2721,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2714,
                                                                    "src": "14638:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Signed memory"
                                                                    }
                                                                },
                                                                "id": 2722,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "rawValue",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 2710,
                                                                "src": "14638:10:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 2723,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "14652:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "14638:15:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4e656761746976652076616c75652070726f7669646564",
                                                            "id": 2725,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14655:25:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_67d4d663a223777b2db72220a0c432830eddb0393ba77b536f13c5166cce6d79",
                                                                "typeString": "literal_string \"Negative value provided\""
                                                            },
                                                            "value": "Negative value provided"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_67d4d663a223777b2db72220a0c432830eddb0393ba77b536f13c5166cce6d79",
                                                                "typeString": "literal_string \"Negative value provided\""
                                                            }
                                                        ],
                                                        "id": 2720,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "14630:7:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 2726,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14630:51:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2727,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14630:51:9"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 2731,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2714,
                                                                        "src": "14715:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 2732,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "14715:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 2730,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "14707:7:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                                    "typeString": "type(uint256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 2729,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "14707:7:9",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 2733,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14707:19:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 2728,
                                                        "name": "Unsigned",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 1955,
                                                        "src": "14698:8:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Unsigned_$1955_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Unsigned storage pointer)"
                                                        }
                                                    },
                                                    "id": 2734,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14698:29:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2719,
                                                "id": 2735,
                                                "nodeType": "Return",
                                                "src": "14691:36:9"
                                            }
                                        ]
                                    },
                                    "id": 2737,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "fromSigned",
                                    "nameLocation": "14552:10:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2715,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2714,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "14577:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2737,
                                                "src": "14563:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2713,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2712,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "14563:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "14563:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14562:17:9"
                                    },
                                    "returnParameters": {
                                        "id": 2719,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2718,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2737,
                                                "src": "14603:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2717,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2716,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "14603:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "14603:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14602:17:9"
                                    },
                                    "scope": 3569,
                                    "src": "14543:191:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2769,
                                        "nodeType": "Block",
                                        "src": "14819:130:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 2757,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 2747,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2740,
                                                                    "src": "14837:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Unsigned memory"
                                                                    }
                                                                },
                                                                "id": 2748,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "rawValue",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1954,
                                                                "src": "14837:10:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 2753,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                    "src": "14864:6:9",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                                        "typeString": "type(int256)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 2752,
                                                                                        "name": "int256",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "14864:6:9",
                                                                                        "typeDescriptions": {}
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                                                        "typeString": "type(int256)"
                                                                                    }
                                                                                ],
                                                                                "id": 2751,
                                                                                "name": "type",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -27,
                                                                                "src": "14859:4:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                                                                    "typeString": "function () pure"
                                                                                }
                                                                            },
                                                                            "id": 2754,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "14859:12:9",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_meta_type_t_int256",
                                                                                "typeString": "type(int256)"
                                                                            }
                                                                        },
                                                                        "id": 2755,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "max",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "14859:16:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 2750,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "14851:7:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_uint256_$",
                                                                        "typeString": "type(uint256)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 2749,
                                                                        "name": "uint256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "14851:7:9",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 2756,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "14851:25:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "14837:39:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "556e7369676e656420746f6f206c61726765",
                                                            "id": 2758,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14878:20:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_691496971f117be8e4dbef07509d13e2786a6857df6bd4e7d50c0d0707e224ae",
                                                                "typeString": "literal_string \"Unsigned too large\""
                                                            },
                                                            "value": "Unsigned too large"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_691496971f117be8e4dbef07509d13e2786a6857df6bd4e7d50c0d0707e224ae",
                                                                "typeString": "literal_string \"Unsigned too large\""
                                                            }
                                                        ],
                                                        "id": 2746,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "14829:7:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 2759,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14829:70:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 2760,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14829:70:9"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 2764,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 2740,
                                                                        "src": "14930:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Unsigned memory"
                                                                        }
                                                                    },
                                                                    "id": 2765,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1954,
                                                                    "src": "14930:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 2763,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "14923:6:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 2762,
                                                                    "name": "int256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "14923:6:9",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 2766,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14923:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 2761,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "14916:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 2767,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14916:26:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2745,
                                                "id": 2768,
                                                "nodeType": "Return",
                                                "src": "14909:33:9"
                                            }
                                        ]
                                    },
                                    "id": 2770,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "fromUnsigned",
                                    "nameLocation": "14749:12:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2741,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2740,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "14778:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2770,
                                                "src": "14762:17:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 2739,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2738,
                                                        "name": "Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "14762:8:9"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "14762:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14761:19:9"
                                    },
                                    "returnParameters": {
                                        "id": 2745,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2744,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2770,
                                                "src": "14804:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2743,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2742,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "14804:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "14804:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14803:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "14740:209:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2786,
                                        "nodeType": "Block",
                                        "src": "15260:57:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 2782,
                                                                    "name": "SFP_SCALING_FACTOR",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2708,
                                                                    "src": "15290:18:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 2780,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2773,
                                                                    "src": "15284:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 2781,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1482,
                                                                "src": "15284:5:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 2783,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "15284:25:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 2779,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "15277:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 2784,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15277:33:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 2778,
                                                "id": 2785,
                                                "nodeType": "Return",
                                                "src": "15270:40:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2771,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "14955:227:9",
                                        "text": " @notice Constructs a `Signed` from an unscaled int, e.g., `b=5` gets stored internally as `5*(10**18)`.\n @param a int to convert into a FixedPoint.Signed.\n @return the converted FixedPoint.Signed."
                                    },
                                    "id": 2787,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "fromUnscaledInt",
                                    "nameLocation": "15196:15:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2774,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2773,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "15219:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2787,
                                                "src": "15212:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2772,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15212:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15211:10:9"
                                    },
                                    "returnParameters": {
                                        "id": 2778,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2777,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2787,
                                                "src": "15245:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2776,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2775,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "15245:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "15245:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15244:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "15187:130:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2806,
                                        "nodeType": "Block",
                                        "src": "15559:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2804,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2798,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2791,
                                                            "src": "15576:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2799,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "15576:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2801,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2793,
                                                                    "src": "15606:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 2800,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "15590:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 2802,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "15590:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2803,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "15590:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "15576:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2797,
                                                "id": 2805,
                                                "nodeType": "Return",
                                                "src": "15569:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2788,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "15323:158:9",
                                        "text": " @notice Whether `a` is equal to `b`.\n @param a a FixedPoint.Signed.\n @param b a int256.\n @return True if equal, or False."
                                    },
                                    "id": 2807,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isEqual",
                                    "nameLocation": "15495:7:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2794,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2791,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "15517:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2807,
                                                "src": "15503:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2790,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2789,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "15503:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "15503:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2793,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "15527:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2807,
                                                "src": "15520:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2792,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15520:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15502:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 2797,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2796,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2807,
                                                "src": "15553:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2795,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15553:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15552:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "15486:138:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2825,
                                        "nodeType": "Block",
                                        "src": "15884:48:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2823,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2819,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2811,
                                                            "src": "15901:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2820,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "15901:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2821,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2814,
                                                            "src": "15915:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2822,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "15915:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "15901:24:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2818,
                                                "id": 2824,
                                                "nodeType": "Return",
                                                "src": "15894:31:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2808,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "15630:169:9",
                                        "text": " @notice Whether `a` is equal to `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if equal, or False."
                                    },
                                    "id": 2826,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isEqual",
                                    "nameLocation": "15813:7:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2815,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2811,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "15835:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2826,
                                                "src": "15821:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2810,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2809,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "15821:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "15821:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2814,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "15852:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2826,
                                                "src": "15838:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2813,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2812,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "15838:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "15838:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15820:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 2818,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2817,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2826,
                                                "src": "15878:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2816,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "15878:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "15877:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "15804:128:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2844,
                                        "nodeType": "Block",
                                        "src": "16204:47:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2842,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2838,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2830,
                                                            "src": "16221:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2839,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "16221:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2840,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2833,
                                                            "src": "16234:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2841,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "16234:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "16221:23:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2837,
                                                "id": 2843,
                                                "nodeType": "Return",
                                                "src": "16214:30:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2827,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "15938:175:9",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if `a > b`, or False."
                                    },
                                    "id": 2845,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "16127:13:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2834,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2830,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "16155:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2845,
                                                "src": "16141:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2829,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2828,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "16141:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "16141:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2833,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "16172:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2845,
                                                "src": "16158:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2832,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2831,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "16158:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "16158:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16140:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 2837,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2836,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2845,
                                                "src": "16198:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2835,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16198:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16197:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "16118:133:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2864,
                                        "nodeType": "Block",
                                        "src": "16506:64:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2862,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2856,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2849,
                                                            "src": "16523:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2857,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "16523:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2859,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2851,
                                                                    "src": "16552:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 2858,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "16536:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 2860,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "16536:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2861,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "16536:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "16523:40:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2855,
                                                "id": 2863,
                                                "nodeType": "Return",
                                                "src": "16516:47:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2846,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "16257:165:9",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return True if `a > b`, or False."
                                    },
                                    "id": 2865,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "16436:13:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2852,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2849,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "16464:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2865,
                                                "src": "16450:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2848,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2847,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "16450:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "16450:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2851,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "16474:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2865,
                                                "src": "16467:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2850,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16467:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16449:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 2855,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2854,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2865,
                                                "src": "16500:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2853,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16500:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16499:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "16427:143:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2884,
                                        "nodeType": "Block",
                                        "src": "16825:64:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2882,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2877,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2868,
                                                                    "src": "16858:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 2876,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "16842:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 2878,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "16842:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2879,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "16842:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2880,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2871,
                                                            "src": "16872:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2881,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "16872:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "16842:40:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2875,
                                                "id": 2883,
                                                "nodeType": "Return",
                                                "src": "16835:47:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2866,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "16576:165:9",
                                        "text": " @notice Whether `a` is greater than `b`.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return True if `a > b`, or False."
                                    },
                                    "id": 2885,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThan",
                                    "nameLocation": "16755:13:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2872,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2868,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "16776:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2885,
                                                "src": "16769:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2867,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16769:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2871,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "16793:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2885,
                                                "src": "16779:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2870,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2869,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "16779:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "16779:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16768:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 2875,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2874,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2885,
                                                "src": "16819:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2873,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "16819:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "16818:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "16746:143:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2903,
                                        "nodeType": "Block",
                                        "src": "17181:48:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2901,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2897,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2889,
                                                            "src": "17198:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2898,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "17198:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2899,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2892,
                                                            "src": "17212:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2900,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "17212:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "17198:24:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2896,
                                                "id": 2902,
                                                "nodeType": "Return",
                                                "src": "17191:31:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2886,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "16895:188:9",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 2904,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "17097:20:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2893,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2889,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "17132:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2904,
                                                "src": "17118:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2888,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2887,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "17118:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "17118:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2892,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "17149:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2904,
                                                "src": "17135:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2891,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2890,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "17135:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "17135:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17117:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 2896,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2895,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2904,
                                                "src": "17175:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2894,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17175:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17174:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "17088:141:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2923,
                                        "nodeType": "Block",
                                        "src": "17504:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2921,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2915,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2908,
                                                            "src": "17521:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2916,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "17521:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2918,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2910,
                                                                    "src": "17551:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 2917,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "17535:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 2919,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "17535:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2920,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "17535:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "17521:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2914,
                                                "id": 2922,
                                                "nodeType": "Return",
                                                "src": "17514:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2905,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "17235:178:9",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 2924,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "17427:20:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2911,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2908,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "17462:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2924,
                                                "src": "17448:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2907,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2906,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "17448:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "17448:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2910,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "17472:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2924,
                                                "src": "17465:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2909,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17465:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17447:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 2914,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2913,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2924,
                                                "src": "17498:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2912,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17498:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17497:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "17418:151:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2943,
                                        "nodeType": "Block",
                                        "src": "17844:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2941,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2936,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2927,
                                                                    "src": "17877:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 2935,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "17861:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 2937,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "17861:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2938,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "17861:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2939,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2930,
                                                            "src": "17892:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2940,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "17892:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "17861:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2934,
                                                "id": 2942,
                                                "nodeType": "Return",
                                                "src": "17854:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2925,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "17575:178:9",
                                        "text": " @notice Whether `a` is greater than or equal to `b`.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return True if `a >= b`, or False."
                                    },
                                    "id": 2944,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isGreaterThanOrEqual",
                                    "nameLocation": "17767:20:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2931,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2927,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "17795:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2944,
                                                "src": "17788:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2926,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17788:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2930,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "17812:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2944,
                                                "src": "17798:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2929,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2928,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "17798:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "17798:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17787:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 2934,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2933,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2944,
                                                "src": "17838:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2932,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17838:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "17837:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "17758:151:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2962,
                                        "nodeType": "Block",
                                        "src": "18175:47:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2960,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2956,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2948,
                                                            "src": "18192:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2957,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "18192:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2958,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2951,
                                                            "src": "18205:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2959,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "18205:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "18192:23:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2955,
                                                "id": 2961,
                                                "nodeType": "Return",
                                                "src": "18185:30:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2945,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "17915:172:9",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if `a < b`, or False."
                                    },
                                    "id": 2963,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "18101:10:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2952,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2948,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "18126:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2963,
                                                "src": "18112:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2947,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2946,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "18112:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "18112:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2951,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "18143:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2963,
                                                "src": "18129:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2950,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2949,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "18129:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "18129:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18111:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 2955,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2954,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2963,
                                                "src": "18169:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2953,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18169:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18168:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "18092:130:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 2982,
                                        "nodeType": "Block",
                                        "src": "18471:64:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 2980,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 2974,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2967,
                                                            "src": "18488:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2975,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "18488:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2977,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2969,
                                                                    "src": "18517:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 2976,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "18501:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 2978,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18501:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2979,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "18501:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "18488:40:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2973,
                                                "id": 2981,
                                                "nodeType": "Return",
                                                "src": "18481:47:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2964,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "18228:162:9",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return True if `a < b`, or False."
                                    },
                                    "id": 2983,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "18404:10:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2970,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2967,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "18429:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2983,
                                                "src": "18415:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2966,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2965,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "18415:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "18415:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2969,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "18439:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2983,
                                                "src": "18432:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2968,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18432:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18414:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 2973,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2972,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 2983,
                                                "src": "18465:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2971,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18465:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18464:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "18395:140:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3002,
                                        "nodeType": "Block",
                                        "src": "18784:64:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3000,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 2995,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2986,
                                                                    "src": "18817:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 2994,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "18801:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 2996,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18801:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2997,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "18801:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 2998,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2989,
                                                            "src": "18831:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 2999,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "18831:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "18801:40:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 2993,
                                                "id": 3001,
                                                "nodeType": "Return",
                                                "src": "18794:47:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 2984,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "18541:162:9",
                                        "text": " @notice Whether `a` is less than `b`.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return True if `a < b`, or False."
                                    },
                                    "id": 3003,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThan",
                                    "nameLocation": "18717:10:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 2990,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2986,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "18735:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3003,
                                                "src": "18728:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 2985,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18728:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 2989,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "18752:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3003,
                                                "src": "18738:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 2988,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 2987,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "18738:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "18738:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18727:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 2993,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 2992,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3003,
                                                "src": "18778:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 2991,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "18778:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "18777:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "18708:140:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3021,
                                        "nodeType": "Block",
                                        "src": "19134:48:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3019,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3015,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3007,
                                                            "src": "19151:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 3016,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "19151:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3017,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3010,
                                                            "src": "19165:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 3018,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "19165:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "19151:24:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3014,
                                                "id": 3020,
                                                "nodeType": "Return",
                                                "src": "19144:31:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3004,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "18854:185:9",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 3022,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "19053:17:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3011,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3007,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "19085:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3022,
                                                "src": "19071:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3006,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3005,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "19071:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "19071:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3010,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "19102:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3022,
                                                "src": "19088:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3009,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3008,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "19088:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "19088:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19070:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3014,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3013,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3022,
                                                "src": "19128:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3012,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19128:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19127:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "19044:138:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3041,
                                        "nodeType": "Block",
                                        "src": "19451:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3039,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 3033,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3026,
                                                            "src": "19468:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 3034,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "19468:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3036,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3028,
                                                                    "src": "19498:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 3035,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "19482:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 3037,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "19482:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 3038,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "19482:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "19468:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3032,
                                                "id": 3040,
                                                "nodeType": "Return",
                                                "src": "19461:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3023,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "19188:175:9",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 3042,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "19377:17:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3029,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3026,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "19409:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3042,
                                                "src": "19395:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3025,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3024,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "19395:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "19395:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3028,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "19419:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3042,
                                                "src": "19412:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3027,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19412:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19394:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3032,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3031,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3042,
                                                "src": "19445:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3030,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19445:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19444:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "19368:148:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3061,
                                        "nodeType": "Block",
                                        "src": "19785:65:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3059,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3054,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3045,
                                                                    "src": "19818:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 3053,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "19802:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 3055,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "19802:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 3056,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "19802:27:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<=",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3057,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3048,
                                                            "src": "19833:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 3058,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "19833:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "19802:41:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "functionReturnParameters": 3052,
                                                "id": 3060,
                                                "nodeType": "Return",
                                                "src": "19795:48:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3043,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "19522:175:9",
                                        "text": " @notice Whether `a` is less than or equal to `b`.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return True if `a <= b`, or False."
                                    },
                                    "id": 3062,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "isLessThanOrEqual",
                                    "nameLocation": "19711:17:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3049,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3045,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "19736:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3062,
                                                "src": "19729:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3044,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19729:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3048,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "19753:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3062,
                                                "src": "19739:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3047,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3046,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "19739:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "19739:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19728:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3052,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3051,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3062,
                                                "src": "19779:4:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 3050,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "19779:4:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19778:6:9"
                                    },
                                    "scope": 3569,
                                    "src": "19702:148:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3084,
                                        "nodeType": "Block",
                                        "src": "20117:55:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 3079,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 3075,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3066,
                                                                "src": "20134:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3076,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2710,
                                                            "src": "20134:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 3077,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3069,
                                                                "src": "20147:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3078,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2710,
                                                            "src": "20147:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "20134:23:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 3081,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3069,
                                                        "src": "20164:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "id": 3082,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "20134:31:9",
                                                    "trueExpression": {
                                                        "id": 3080,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3066,
                                                        "src": "20160:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3074,
                                                "id": 3083,
                                                "nodeType": "Return",
                                                "src": "20127:38:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3063,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "19856:171:9",
                                        "text": " @notice The minimum of `a` and `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the minimum of `a` and `b`."
                                    },
                                    "id": 3085,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "min",
                                    "nameLocation": "20041:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3070,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3066,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "20059:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3085,
                                                "src": "20045:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3065,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3064,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20045:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20045:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3069,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "20076:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3085,
                                                "src": "20062:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3068,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3067,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20062:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20062:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20044:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3074,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3073,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3085,
                                                "src": "20102:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3072,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3071,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20102:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20102:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20101:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "20032:140:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3107,
                                        "nodeType": "Block",
                                        "src": "20439:55:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 3102,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 3098,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3089,
                                                                "src": "20456:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3099,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2710,
                                                            "src": "20456:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 3100,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3092,
                                                                "src": "20469:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3101,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2710,
                                                            "src": "20469:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "20456:23:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 3104,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3092,
                                                        "src": "20486:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "id": 3105,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "20456:31:9",
                                                    "trueExpression": {
                                                        "id": 3103,
                                                        "name": "a",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3089,
                                                        "src": "20482:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3097,
                                                "id": 3106,
                                                "nodeType": "Return",
                                                "src": "20449:38:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3086,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "20178:171:9",
                                        "text": " @notice The maximum of `a` and `b`.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the maximum of `a` and `b`."
                                    },
                                    "id": 3108,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "max",
                                    "nameLocation": "20363:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3093,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3089,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "20381:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3108,
                                                "src": "20367:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3088,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3087,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20367:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20367:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3092,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "20398:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3108,
                                                "src": "20384:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3091,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3090,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20384:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20384:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20366:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3097,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3096,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3108,
                                                "src": "20424:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3095,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3094,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20424:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20424:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20423:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "20354:140:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3130,
                                        "nodeType": "Block",
                                        "src": "20772:58:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 3125,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3115,
                                                                        "src": "20811:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 3126,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "20811:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 3122,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3112,
                                                                        "src": "20796:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 3123,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "20796:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 3124,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "add",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1527,
                                                                "src": "20796:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 3127,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "20796:26:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 3121,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "20789:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 3128,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "20789:34:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3120,
                                                "id": 3129,
                                                "nodeType": "Return",
                                                "src": "20782:41:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3109,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "20500:182:9",
                                        "text": " @notice Adds two `Signed`s, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the sum of `a` and `b`."
                                    },
                                    "id": 3131,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "20696:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3116,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3112,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "20714:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3131,
                                                "src": "20700:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3111,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3110,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20700:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20700:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3115,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "20731:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3131,
                                                "src": "20717:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3114,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3113,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20717:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20717:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20699:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3120,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3119,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3131,
                                                "src": "20757:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3118,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3117,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "20757:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "20757:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "20756:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "20687:143:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3150,
                                        "nodeType": "Block",
                                        "src": "21108:50:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 3144,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3135,
                                                            "src": "21129:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3146,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3137,
                                                                    "src": "21148:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 3145,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "21132:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 3147,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21132:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 3143,
                                                        "name": "add",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2316,
                                                            2336,
                                                            3131,
                                                            3151
                                                        ],
                                                        "referencedDeclaration": 3131,
                                                        "src": "21125:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_struct$_Signed_$2711_memory_ptr_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 3148,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21125:26:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3142,
                                                "id": 3149,
                                                "nodeType": "Return",
                                                "src": "21118:33:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3132,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "20836:189:9",
                                        "text": " @notice Adds an `Signed` to an unscaled int, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return the sum of `a` and `b`."
                                    },
                                    "id": 3151,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "add",
                                    "nameLocation": "21039:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3138,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3135,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "21057:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3151,
                                                "src": "21043:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3134,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3133,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "21043:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "21043:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3137,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "21067:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3151,
                                                "src": "21060:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3136,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "21060:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21042:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3142,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3141,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3151,
                                                "src": "21093:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3140,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3139,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "21093:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "21093:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21092:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "21030:128:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3173,
                                        "nodeType": "Block",
                                        "src": "21448:58:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 3168,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3158,
                                                                        "src": "21487:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 3169,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "21487:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 3165,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3155,
                                                                        "src": "21472:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 3166,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "21472:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 3167,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sub",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1512,
                                                                "src": "21472:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 3170,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21472:26:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 3164,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "21465:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 3171,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21465:34:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3163,
                                                "id": 3172,
                                                "nodeType": "Return",
                                                "src": "21458:41:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3152,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "21164:194:9",
                                        "text": " @notice Subtracts two `Signed`s, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 3174,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "21372:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3159,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3155,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "21390:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3174,
                                                "src": "21376:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3154,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3153,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "21376:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "21376:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3158,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "21407:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3174,
                                                "src": "21393:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3157,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3156,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "21393:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "21393:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21375:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3163,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3162,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3174,
                                                "src": "21433:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3161,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3160,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "21433:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "21433:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21432:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "21363:143:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3193,
                                        "nodeType": "Block",
                                        "src": "21801:50:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 3187,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3178,
                                                            "src": "21822:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3189,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3180,
                                                                    "src": "21841:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 3188,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "21825:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 3190,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "21825:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 3186,
                                                        "name": "sub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2359,
                                                            2379,
                                                            2399,
                                                            3174,
                                                            3194,
                                                            3214
                                                        ],
                                                        "referencedDeclaration": 3174,
                                                        "src": "21818:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_struct$_Signed_$2711_memory_ptr_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 3191,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21818:26:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3185,
                                                "id": 3192,
                                                "nodeType": "Return",
                                                "src": "21811:33:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3175,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "21512:206:9",
                                        "text": " @notice Subtracts an unscaled int256 from an `Signed`, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 3194,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "21732:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3181,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3178,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "21750:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3194,
                                                "src": "21736:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3177,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3176,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "21736:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "21736:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3180,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "21760:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3194,
                                                "src": "21753:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3179,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "21753:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21735:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3185,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3184,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3194,
                                                "src": "21786:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3183,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3182,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "21786:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "21786:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21785:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "21723:128:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3213,
                                        "nodeType": "Block",
                                        "src": "22146:50:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3208,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3197,
                                                                    "src": "22183:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 3207,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "22167:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 3209,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "22167:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 3210,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3200,
                                                            "src": "22187:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 3206,
                                                        "name": "sub",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2359,
                                                            2379,
                                                            2399,
                                                            3174,
                                                            3194,
                                                            3214
                                                        ],
                                                        "referencedDeclaration": 3174,
                                                        "src": "22163:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_struct$_Signed_$2711_memory_ptr_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 3211,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22163:26:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3205,
                                                "id": 3212,
                                                "nodeType": "Return",
                                                "src": "22156:33:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3195,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "21857:206:9",
                                        "text": " @notice Subtracts an `Signed` from an unscaled int256, reverting on overflow.\n @param a an int256.\n @param b a FixedPoint.Signed.\n @return the difference of `a` and `b`."
                                    },
                                    "id": 3214,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "sub",
                                    "nameLocation": "22077:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3201,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3197,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "22088:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3214,
                                                "src": "22081:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3196,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "22081:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3200,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "22105:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3214,
                                                "src": "22091:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3199,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3198,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "22091:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "22091:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "22080:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3205,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3204,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3214,
                                                "src": "22131:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3203,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3202,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "22131:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "22131:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "22130:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "22068:128:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3238,
                                        "nodeType": "Block",
                                        "src": "22527:559:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            "id": 3235,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 3231,
                                                                            "name": "b",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3221,
                                                                            "src": "23046:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        "id": 3232,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "rawValue",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2710,
                                                                        "src": "23046:10:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "expression": {
                                                                            "id": 3228,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3218,
                                                                            "src": "23031:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        "id": 3229,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "rawValue",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 2710,
                                                                        "src": "23031:10:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    "id": 3230,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "mul",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 1482,
                                                                    "src": "23031:14:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                        "typeString": "function (int256,int256) pure returns (int256)"
                                                                    }
                                                                },
                                                                "id": 3233,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "23031:26:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "/",
                                                            "rightExpression": {
                                                                "id": 3234,
                                                                "name": "SFP_SCALING_FACTOR",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2708,
                                                                "src": "23060:18:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "src": "23031:47:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 3227,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "23024:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 3236,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23024:55:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3226,
                                                "id": 3237,
                                                "nodeType": "Return",
                                                "src": "23017:62:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3215,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "22202:235:9",
                                        "text": " @notice Multiplies two `Signed`s, reverting on overflow.\n @dev This will \"floor\" the product.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the product of `a` and `b`."
                                    },
                                    "id": 3239,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "22451:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3222,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3218,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "22469:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3239,
                                                "src": "22455:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3217,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3216,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "22455:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "22455:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3221,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "22486:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3239,
                                                "src": "22472:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3220,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3219,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "22472:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "22472:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "22454:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3226,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3225,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3239,
                                                "src": "22512:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3224,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3223,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "22512:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "22512:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "22511:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "22442:644:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3259,
                                        "nodeType": "Block",
                                        "src": "23421:49:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3255,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3245,
                                                                    "src": "23460:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 3252,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3243,
                                                                        "src": "23445:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 3253,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "23445:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 3254,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1482,
                                                                "src": "23445:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 3256,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "23445:17:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 3251,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "23438:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 3257,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23438:25:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3250,
                                                "id": 3258,
                                                "nodeType": "Return",
                                                "src": "23431:32:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3240,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "23092:246:9",
                                        "text": " @notice Multiplies an `Signed` and an unscaled int256, reverting on overflow.\n @dev This will \"floor\" the product.\n @param a a FixedPoint.Signed.\n @param b an int256.\n @return the product of `a` and `b`."
                                    },
                                    "id": 3260,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mul",
                                    "nameLocation": "23352:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3246,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3243,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "23370:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3260,
                                                "src": "23356:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3242,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3241,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "23356:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "23356:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3245,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "23380:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3260,
                                                "src": "23373:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3244,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "23373:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "23355:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3250,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3249,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3260,
                                                "src": "23406:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3248,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3247,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "23406:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "23406:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "23405:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "23343:127:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3337,
                                        "nodeType": "Block",
                                        "src": "23795:537:9",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    3274
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3274,
                                                        "mutability": "mutable",
                                                        "name": "mulRaw",
                                                        "nameLocation": "23812:6:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3337,
                                                        "src": "23805:13:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 3273,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "23805:6:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3281,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 3278,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3267,
                                                                "src": "23836:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3279,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2710,
                                                            "src": "23836:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "expression": {
                                                                "id": 3275,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3264,
                                                                "src": "23821:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3276,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2710,
                                                            "src": "23821:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "id": 3277,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1482,
                                                        "src": "23821:14:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 3280,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23821:26:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "23805:42:9"
                                            },
                                            {
                                                "assignments": [
                                                    3283
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3283,
                                                        "mutability": "mutable",
                                                        "name": "mulTowardsZero",
                                                        "nameLocation": "23864:14:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3337,
                                                        "src": "23857:21:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 3282,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "23857:6:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3287,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3286,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3284,
                                                        "name": "mulRaw",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3274,
                                                        "src": "23881:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 3285,
                                                        "name": "SFP_SCALING_FACTOR",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2708,
                                                        "src": "23890:18:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "23881:27:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "23857:51:9"
                                            },
                                            {
                                                "assignments": [
                                                    3289
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3289,
                                                        "mutability": "mutable",
                                                        "name": "mod",
                                                        "nameLocation": "23990:3:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3337,
                                                        "src": "23983:10:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 3288,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "23983:6:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3293,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3292,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3290,
                                                        "name": "mulRaw",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3274,
                                                        "src": "23996:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "%",
                                                    "rightExpression": {
                                                        "id": 3291,
                                                        "name": "SFP_SCALING_FACTOR",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2708,
                                                        "src": "24005:18:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "23996:27:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "23983:40:9"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3296,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3294,
                                                        "name": "mod",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3289,
                                                        "src": "24037:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 3295,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "24044:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "24037:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 3335,
                                                    "nodeType": "Block",
                                                    "src": "24272:54:9",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 3332,
                                                                        "name": "mulTowardsZero",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3283,
                                                                        "src": "24300:14:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 3331,
                                                                    "name": "Signed",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2711,
                                                                    "src": "24293:6:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                                    }
                                                                },
                                                                "id": 3333,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "24293:22:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 3272,
                                                            "id": 3334,
                                                            "nodeType": "Return",
                                                            "src": "24286:29:9"
                                                        }
                                                    ]
                                                },
                                                "id": 3336,
                                                "nodeType": "IfStatement",
                                                "src": "24033:293:9",
                                                "trueBody": {
                                                    "id": 3330,
                                                    "nodeType": "Block",
                                                    "src": "24047:219:9",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                3298
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 3298,
                                                                    "mutability": "mutable",
                                                                    "name": "isResultPositive",
                                                                    "nameLocation": "24066:16:9",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 3330,
                                                                    "src": "24061:21:9",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3297,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "24061:4:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 3308,
                                                            "initialValue": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 3307,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 3300,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3264,
                                                                            "src": "24096:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 3301,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "24099:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 3299,
                                                                        "name": "isLessThan",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            2148,
                                                                            2168,
                                                                            2188,
                                                                            2963,
                                                                            2983,
                                                                            3003
                                                                        ],
                                                                        "referencedDeclaration": 2983,
                                                                        "src": "24085:10:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_int256_$returns$_t_bool_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,int256) pure returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 3302,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "24085:16:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 3304,
                                                                            "name": "b",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3267,
                                                                            "src": "24116:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 3305,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "24119:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 3303,
                                                                        "name": "isLessThan",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            2148,
                                                                            2168,
                                                                            2188,
                                                                            2963,
                                                                            2983,
                                                                            3003
                                                                        ],
                                                                        "referencedDeclaration": 2983,
                                                                        "src": "24105:10:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_int256_$returns$_t_bool_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,int256) pure returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 3306,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "24105:16:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "24085:36:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "24061:60:9"
                                                        },
                                                        {
                                                            "assignments": [
                                                                3310
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 3310,
                                                                    "mutability": "mutable",
                                                                    "name": "valueToAdd",
                                                                    "nameLocation": "24142:10:9",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 3330,
                                                                    "src": "24135:17:9",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3309,
                                                                        "name": "int256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "24135:6:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 3322,
                                                            "initialValue": {
                                                                "condition": {
                                                                    "id": 3311,
                                                                    "name": "isResultPositive",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3298,
                                                                    "src": "24155:16:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "falseExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 3319,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "UnaryOperation",
                                                                            "operator": "-",
                                                                            "prefix": true,
                                                                            "src": "24193:2:9",
                                                                            "subExpression": {
                                                                                "hexValue": "31",
                                                                                "id": 3318,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "24194:1:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            },
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                "typeString": "int_const -1"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                "typeString": "int_const -1"
                                                                            }
                                                                        ],
                                                                        "id": 3317,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "24186:6:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 3316,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "24186:6:9",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 3320,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "24186:10:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 3321,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "Conditional",
                                                                "src": "24155:41:9",
                                                                "trueExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "31",
                                                                            "id": 3314,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "24181:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                "typeString": "int_const 1"
                                                                            },
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                "typeString": "int_const 1"
                                                                            }
                                                                        ],
                                                                        "id": 3313,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "24174:6:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 3312,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "24174:6:9",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 3315,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "24174:9:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "24135:61:9"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 3326,
                                                                                "name": "valueToAdd",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3310,
                                                                                "src": "24243:10:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 3324,
                                                                                "name": "mulTowardsZero",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3283,
                                                                                "src": "24224:14:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "id": 3325,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "add",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 1527,
                                                                            "src": "24224:18:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                                "typeString": "function (int256,int256) pure returns (int256)"
                                                                            }
                                                                        },
                                                                        "id": 3327,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "24224:30:9",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 3323,
                                                                    "name": "Signed",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2711,
                                                                    "src": "24217:6:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                                    }
                                                                },
                                                                "id": 3328,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "24217:38:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 3272,
                                                            "id": 3329,
                                                            "nodeType": "Return",
                                                            "src": "24210:45:9"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3261,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "23476:217:9",
                                        "text": " @notice Multiplies two `Signed`s and \"ceil's\" the product, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the product of `a` and `b`."
                                    },
                                    "id": 3338,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mulAwayFromZero",
                                    "nameLocation": "23707:15:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3268,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3264,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "23737:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3338,
                                                "src": "23723:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3263,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3262,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "23723:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "23723:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3267,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "23754:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3338,
                                                "src": "23740:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3266,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3265,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "23740:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "23740:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "23722:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3272,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3271,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3338,
                                                "src": "23780:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3270,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3269,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "23780:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "23780:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "23779:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "23698:634:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3358,
                                        "nodeType": "Block",
                                        "src": "24671:142:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3354,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3344,
                                                                    "src": "24803:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 3351,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3342,
                                                                        "src": "24788:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 3352,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "24788:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 3353,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "mul",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1482,
                                                                "src": "24788:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 3355,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "24788:17:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 3350,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "24781:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 3356,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "24781:25:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3349,
                                                "id": 3357,
                                                "nodeType": "Return",
                                                "src": "24774:32:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3339,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "24338:238:9",
                                        "text": " @notice Multiplies an `Signed` and an unscaled int256 and \"ceil's\" the product, reverting on overflow.\n @param a a FixedPoint.Signed.\n @param b a FixedPoint.Signed.\n @return the product of `a` and `b`."
                                    },
                                    "id": 3359,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "mulAwayFromZero",
                                    "nameLocation": "24590:15:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3345,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3342,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "24620:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3359,
                                                "src": "24606:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3341,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3340,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "24606:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "24606:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3344,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "24630:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3359,
                                                "src": "24623:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3343,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "24623:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "24605:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3349,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3348,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3359,
                                                "src": "24656:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3347,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3346,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "24656:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "24656:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "24655:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "24581:232:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3384,
                                        "nodeType": "Block",
                                        "src": "25189:542:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 3379,
                                                                        "name": "b",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3366,
                                                                        "src": "25712:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 3380,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "25712:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 3376,
                                                                            "name": "SFP_SCALING_FACTOR",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 2708,
                                                                            "src": "25688:18:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "expression": {
                                                                                "id": 3373,
                                                                                "name": "a",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3363,
                                                                                "src": "25673:1:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                                }
                                                                            },
                                                                            "id": 3374,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "rawValue",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 2710,
                                                                            "src": "25673:10:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        },
                                                                        "id": 3375,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "mul",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 1482,
                                                                        "src": "25673:14:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                                        }
                                                                    },
                                                                    "id": 3377,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "25673:34:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 3378,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "div",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1497,
                                                                "src": "25673:38:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 3381,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "25673:50:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 3372,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "25666:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 3382,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "25666:58:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3371,
                                                "id": 3383,
                                                "nodeType": "Return",
                                                "src": "25659:65:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3360,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "24819:280:9",
                                        "text": " @notice Divides one `Signed` by an `Signed`, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a FixedPoint numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 3385,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "25113:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3367,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3363,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "25131:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3385,
                                                "src": "25117:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3362,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3361,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "25117:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "25117:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3366,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "25148:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3385,
                                                "src": "25134:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3365,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3364,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "25134:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "25134:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "25116:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3371,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3370,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3385,
                                                "src": "25174:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3369,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3368,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "25174:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "25174:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "25173:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "25104:627:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3405,
                                        "nodeType": "Block",
                                        "src": "26104:49:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3401,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3391,
                                                                    "src": "26143:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "expression": {
                                                                        "id": 3398,
                                                                        "name": "a",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3389,
                                                                        "src": "26128:1:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                            "typeString": "struct FixedPoint.Signed memory"
                                                                        }
                                                                    },
                                                                    "id": 3399,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "rawValue",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 2710,
                                                                    "src": "26128:10:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 3400,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "div",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1497,
                                                                "src": "26128:14:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                    "typeString": "function (int256,int256) pure returns (int256)"
                                                                }
                                                            },
                                                            "id": 3402,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "26128:17:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "id": 3397,
                                                        "name": "Signed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 2711,
                                                        "src": "26121:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                            "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                        }
                                                    },
                                                    "id": 3403,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26121:25:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3396,
                                                "id": 3404,
                                                "nodeType": "Return",
                                                "src": "26114:32:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3386,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "25737:284:9",
                                        "text": " @notice Divides one `Signed` by an unscaled int256, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a a FixedPoint numerator.\n @param b an int256 denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 3406,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "26035:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3392,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3389,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "26053:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3406,
                                                "src": "26039:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3388,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3387,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "26039:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "26039:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3391,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "26063:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3406,
                                                "src": "26056:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3390,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "26056:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26038:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3396,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3395,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3406,
                                                "src": "26089:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3394,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3393,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "26089:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "26089:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26088:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "26026:127:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3425,
                                        "nodeType": "Block",
                                        "src": "26526:50:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3420,
                                                                    "name": "a",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3409,
                                                                    "src": "26563:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 3419,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "26547:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 3421,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "26547:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 3422,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3412,
                                                            "src": "26567:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 3418,
                                                        "name": "div",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            2545,
                                                            2566,
                                                            2586,
                                                            3385,
                                                            3406,
                                                            3426
                                                        ],
                                                        "referencedDeclaration": 3385,
                                                        "src": "26543:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_struct$_Signed_$2711_memory_ptr_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 3423,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26543:26:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3417,
                                                "id": 3424,
                                                "nodeType": "Return",
                                                "src": "26536:33:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3407,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "26159:284:9",
                                        "text": " @notice Divides one unscaled int256 by an `Signed`, reverting on overflow or division by 0.\n @dev This will \"floor\" the quotient.\n @param a an int256 numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 3426,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "div",
                                    "nameLocation": "26457:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3413,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3409,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "26468:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3426,
                                                "src": "26461:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3408,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "26461:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3412,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "26485:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3426,
                                                "src": "26471:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3411,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3410,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "26471:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "26471:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26460:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3417,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3416,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3426,
                                                "src": "26511:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3415,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3414,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "26511:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "26511:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26510:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "26448:128:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3505,
                                        "nodeType": "Block",
                                        "src": "26946:535:9",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    3440
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3440,
                                                        "mutability": "mutable",
                                                        "name": "aScaled",
                                                        "nameLocation": "26963:7:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3505,
                                                        "src": "26956:14:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 3439,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "26956:6:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3446,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 3444,
                                                            "name": "SFP_SCALING_FACTOR",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2708,
                                                            "src": "26988:18:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "expression": {
                                                                "id": 3441,
                                                                "name": "a",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3430,
                                                                "src": "26973:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3442,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2710,
                                                            "src": "26973:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "id": 3443,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "mul",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1482,
                                                        "src": "26973:14:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 3445,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26973:34:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "26956:51:9"
                                            },
                                            {
                                                "assignments": [
                                                    3448
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3448,
                                                        "mutability": "mutable",
                                                        "name": "divTowardsZero",
                                                        "nameLocation": "27024:14:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3505,
                                                        "src": "27017:21:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 3447,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "27017:6:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3454,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 3451,
                                                                "name": "b",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3433,
                                                                "src": "27053:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3452,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "rawValue",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 2710,
                                                            "src": "27053:10:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 3449,
                                                            "name": "aScaled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3440,
                                                            "src": "27041:7:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "id": 3450,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "div",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1497,
                                                        "src": "27041:11:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                            "typeString": "function (int256,int256) pure returns (int256)"
                                                        }
                                                    },
                                                    "id": 3453,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "27041:23:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "27017:47:9"
                                            },
                                            {
                                                "assignments": [
                                                    3456
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3456,
                                                        "mutability": "mutable",
                                                        "name": "mod",
                                                        "nameLocation": "27146:3:9",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3505,
                                                        "src": "27139:10:9",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 3455,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "27139:6:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3461,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3460,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3457,
                                                        "name": "aScaled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3440,
                                                        "src": "27152:7:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "%",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3458,
                                                            "name": "b",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3433,
                                                            "src": "27162:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        "id": 3459,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 2710,
                                                        "src": "27162:10:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "27152:20:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "27139:33:9"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 3464,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3462,
                                                        "name": "mod",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3456,
                                                        "src": "27186:3:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 3463,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "27193:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "27186:8:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 3503,
                                                    "nodeType": "Block",
                                                    "src": "27421:54:9",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 3500,
                                                                        "name": "divTowardsZero",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3448,
                                                                        "src": "27449:14:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 3499,
                                                                    "name": "Signed",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2711,
                                                                    "src": "27442:6:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                                    }
                                                                },
                                                                "id": 3501,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "27442:22:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 3438,
                                                            "id": 3502,
                                                            "nodeType": "Return",
                                                            "src": "27435:29:9"
                                                        }
                                                    ]
                                                },
                                                "id": 3504,
                                                "nodeType": "IfStatement",
                                                "src": "27182:293:9",
                                                "trueBody": {
                                                    "id": 3498,
                                                    "nodeType": "Block",
                                                    "src": "27196:219:9",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                3466
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 3466,
                                                                    "mutability": "mutable",
                                                                    "name": "isResultPositive",
                                                                    "nameLocation": "27215:16:9",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 3498,
                                                                    "src": "27210:21:9",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3465,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "27210:4:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 3476,
                                                            "initialValue": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 3475,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 3468,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3430,
                                                                            "src": "27245:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 3469,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "27248:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 3467,
                                                                        "name": "isLessThan",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            2148,
                                                                            2168,
                                                                            2188,
                                                                            2963,
                                                                            2983,
                                                                            3003
                                                                        ],
                                                                        "referencedDeclaration": 2983,
                                                                        "src": "27234:10:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_int256_$returns$_t_bool_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,int256) pure returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 3470,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "27234:16:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 3472,
                                                                            "name": "b",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3433,
                                                                            "src": "27265:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 3473,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "27268:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            },
                                                                            "value": "0"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                                "typeString": "int_const 0"
                                                                            }
                                                                        ],
                                                                        "id": 3471,
                                                                        "name": "isLessThan",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            2148,
                                                                            2168,
                                                                            2188,
                                                                            2963,
                                                                            2983,
                                                                            3003
                                                                        ],
                                                                        "referencedDeclaration": 2983,
                                                                        "src": "27254:10:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_int256_$returns$_t_bool_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,int256) pure returns (bool)"
                                                                        }
                                                                    },
                                                                    "id": 3474,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "27254:16:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "27234:36:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "27210:60:9"
                                                        },
                                                        {
                                                            "assignments": [
                                                                3478
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 3478,
                                                                    "mutability": "mutable",
                                                                    "name": "valueToAdd",
                                                                    "nameLocation": "27291:10:9",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 3498,
                                                                    "src": "27284:17:9",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3477,
                                                                        "name": "int256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "27284:6:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 3490,
                                                            "initialValue": {
                                                                "condition": {
                                                                    "id": 3479,
                                                                    "name": "isResultPositive",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3466,
                                                                    "src": "27304:16:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "falseExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 3487,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "UnaryOperation",
                                                                            "operator": "-",
                                                                            "prefix": true,
                                                                            "src": "27342:2:9",
                                                                            "subExpression": {
                                                                                "hexValue": "31",
                                                                                "id": 3486,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "27343:1:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                                    "typeString": "int_const 1"
                                                                                },
                                                                                "value": "1"
                                                                            },
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                "typeString": "int_const -1"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_minus_1_by_1",
                                                                                "typeString": "int_const -1"
                                                                            }
                                                                        ],
                                                                        "id": 3485,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "27335:6:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 3484,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "27335:6:9",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 3488,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "27335:10:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "id": 3489,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "Conditional",
                                                                "src": "27304:41:9",
                                                                "trueExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "31",
                                                                            "id": 3482,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "27330:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                "typeString": "int_const 1"
                                                                            },
                                                                            "value": "1"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_rational_1_by_1",
                                                                                "typeString": "int_const 1"
                                                                            }
                                                                        ],
                                                                        "id": 3481,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "27323:6:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 3480,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "27323:6:9",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 3483,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "27323:9:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "27284:61:9"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 3494,
                                                                                "name": "valueToAdd",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3478,
                                                                                "src": "27392:10:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 3492,
                                                                                "name": "divTowardsZero",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3448,
                                                                                "src": "27373:14:9",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_int256",
                                                                                    "typeString": "int256"
                                                                                }
                                                                            },
                                                                            "id": 3493,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "add",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 1527,
                                                                            "src": "27373:18:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$",
                                                                                "typeString": "function (int256,int256) pure returns (int256)"
                                                                            }
                                                                        },
                                                                        "id": 3495,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "27373:30:9",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_int256",
                                                                            "typeString": "int256"
                                                                        }
                                                                    ],
                                                                    "id": 3491,
                                                                    "name": "Signed",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 2711,
                                                                    "src": "27366:6:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_Signed_$2711_storage_ptr_$",
                                                                        "typeString": "type(struct FixedPoint.Signed storage pointer)"
                                                                    }
                                                                },
                                                                "id": 3496,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "27366:38:9",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "functionReturnParameters": 3438,
                                                            "id": 3497,
                                                            "nodeType": "Return",
                                                            "src": "27359:45:9"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3427,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "26582:262:9",
                                        "text": " @notice Divides one `Signed` by an `Signed` and \"ceil's\" the quotient, reverting on overflow or division by 0.\n @param a a FixedPoint numerator.\n @param b a FixedPoint denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 3506,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "divAwayFromZero",
                                    "nameLocation": "26858:15:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3434,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3430,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "26888:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3506,
                                                "src": "26874:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3429,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3428,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "26874:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "26874:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3433,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "26905:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3506,
                                                "src": "26891:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3432,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3431,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "26891:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "26891:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26873:34:9"
                                    },
                                    "returnParameters": {
                                        "id": 3438,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3437,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3506,
                                                "src": "26931:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3436,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3435,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "26931:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "26931:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "26930:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "26849:632:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3525,
                                        "nodeType": "Block",
                                        "src": "27848:366:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 3519,
                                                            "name": "a",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3510,
                                                            "src": "28185:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3521,
                                                                    "name": "b",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3512,
                                                                    "src": "28204:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                ],
                                                                "id": 3520,
                                                                "name": "fromUnscaledInt",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 2787,
                                                                "src": "28188:15:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                    "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                                }
                                                            },
                                                            "id": 3522,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "28188:18:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                "typeString": "struct FixedPoint.Signed memory"
                                                            }
                                                        ],
                                                        "id": 3518,
                                                        "name": "divAwayFromZero",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            3506,
                                                            3526
                                                        ],
                                                        "referencedDeclaration": 3506,
                                                        "src": "28169:15:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_struct$_Signed_$2711_memory_ptr_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                        }
                                                    },
                                                    "id": 3523,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "28169:38:9",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "functionReturnParameters": 3517,
                                                "id": 3524,
                                                "nodeType": "Return",
                                                "src": "28162:45:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3507,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "27487:266:9",
                                        "text": " @notice Divides one `Signed` by an unscaled int256 and \"ceil's\" the quotient, reverting on overflow or division by 0.\n @param a a FixedPoint numerator.\n @param b an int256 denominator.\n @return the quotient of `a` divided by `b`."
                                    },
                                    "id": 3526,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "divAwayFromZero",
                                    "nameLocation": "27767:15:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3513,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3510,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "27797:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3526,
                                                "src": "27783:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3509,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3508,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "27783:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "27783:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3512,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "27807:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3526,
                                                "src": "27800:8:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 3511,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "27800:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "27782:27:9"
                                    },
                                    "returnParameters": {
                                        "id": 3517,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3516,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3526,
                                                "src": "27833:13:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3515,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3514,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "27833:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "27833:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "27832:15:9"
                                    },
                                    "scope": 3569,
                                    "src": "27758:456:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3567,
                                        "nodeType": "Block",
                                        "src": "28634:142:9",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3542,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3538,
                                                        "name": "output",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3536,
                                                        "src": "28644:6:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "31",
                                                                "id": 3540,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "28669:1:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                },
                                                                "value": "1"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_1_by_1",
                                                                    "typeString": "int_const 1"
                                                                }
                                                            ],
                                                            "id": 3539,
                                                            "name": "fromUnscaledInt",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 2787,
                                                            "src": "28653:15:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                "typeString": "function (int256) pure returns (struct FixedPoint.Signed memory)"
                                                            }
                                                        },
                                                        "id": 3541,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "28653:18:9",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                            "typeString": "struct FixedPoint.Signed memory"
                                                        }
                                                    },
                                                    "src": "28644:27:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                        "typeString": "struct FixedPoint.Signed memory"
                                                    }
                                                },
                                                "id": 3543,
                                                "nodeType": "ExpressionStatement",
                                                "src": "28644:27:9"
                                            },
                                            {
                                                "body": {
                                                    "id": 3565,
                                                    "nodeType": "Block",
                                                    "src": "28722:48:9",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 3563,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 3558,
                                                                    "name": "output",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3536,
                                                                    "src": "28736:6:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Signed memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 3560,
                                                                            "name": "output",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3536,
                                                                            "src": "28749:6:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        },
                                                                        {
                                                                            "id": 3561,
                                                                            "name": "a",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3530,
                                                                            "src": "28757:1:9",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            },
                                                                            {
                                                                                "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                                "typeString": "struct FixedPoint.Signed memory"
                                                                            }
                                                                        ],
                                                                        "id": 3559,
                                                                        "name": "mul",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [
                                                                            2424,
                                                                            2445,
                                                                            3239,
                                                                            3260
                                                                        ],
                                                                        "referencedDeclaration": 3239,
                                                                        "src": "28745:3:9",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_pure$_t_struct$_Signed_$2711_memory_ptr_$_t_struct$_Signed_$2711_memory_ptr_$returns$_t_struct$_Signed_$2711_memory_ptr_$",
                                                                            "typeString": "function (struct FixedPoint.Signed memory,struct FixedPoint.Signed memory) pure returns (struct FixedPoint.Signed memory)"
                                                                        }
                                                                    },
                                                                    "id": 3562,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "28745:14:9",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                        "typeString": "struct FixedPoint.Signed memory"
                                                                    }
                                                                },
                                                                "src": "28736:23:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                                    "typeString": "struct FixedPoint.Signed memory"
                                                                }
                                                            },
                                                            "id": 3564,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "28736:23:9"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3550,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3548,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3545,
                                                        "src": "28701:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "id": 3549,
                                                        "name": "b",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3532,
                                                        "src": "28705:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "28701:5:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 3566,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        3545
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 3545,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "28694:1:9",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 3566,
                                                            "src": "28686:9:9",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 3544,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "28686:7:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 3547,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 3546,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "28698:1:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "28686:13:9"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 3556,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftHandSide": {
                                                            "id": 3551,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3545,
                                                            "src": "28708:1:9",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "Assignment",
                                                        "operator": "=",
                                                        "rightHandSide": {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "31",
                                                                    "id": 3554,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "28718:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    },
                                                                    "value": "1"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_1_by_1",
                                                                        "typeString": "int_const 1"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 3552,
                                                                    "name": "i",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3545,
                                                                    "src": "28712:1:9",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "id": 3553,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "add",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 1328,
                                                                "src": "28712:5:9",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 3555,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "28712:8:9",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "28708:12:9",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 3557,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "28708:12:9"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "28681:89:9"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3527,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "28220:323:9",
                                        "text": " @notice Raises an `Signed` to the power of an unscaled uint256, reverting on overflow. E.g., `b=2` squares `a`.\n @dev This will \"floor\" the result.\n @param a a FixedPoint.Signed.\n @param b a uint256 (negative exponents are not allowed).\n @return output is `a` to the power of `b`."
                                    },
                                    "id": 3568,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "pow",
                                    "nameLocation": "28557:3:9",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3533,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3530,
                                                "mutability": "mutable",
                                                "name": "a",
                                                "nameLocation": "28575:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3568,
                                                "src": "28561:15:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3529,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3528,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "28561:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "28561:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3532,
                                                "mutability": "mutable",
                                                "name": "b",
                                                "nameLocation": "28586:1:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3568,
                                                "src": "28578:9:9",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3531,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "28578:7:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "28560:28:9"
                                    },
                                    "returnParameters": {
                                        "id": 3537,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3536,
                                                "mutability": "mutable",
                                                "name": "output",
                                                "nameLocation": "28626:6:9",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3568,
                                                "src": "28612:20:9",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Signed_$2711_memory_ptr",
                                                    "typeString": "struct FixedPoint.Signed"
                                                },
                                                "typeName": {
                                                    "id": 3535,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3534,
                                                        "name": "Signed",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 2711,
                                                        "src": "28612:6:9"
                                                    },
                                                    "referencedDeclaration": 2711,
                                                    "src": "28612:6:9",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Signed_$2711_storage_ptr",
                                                        "typeString": "struct FixedPoint.Signed"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "28611:22:9"
                                    },
                                    "scope": 3569,
                                    "src": "28548:228:9",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 3570,
                            "src": "252:28526:9",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:28737:9"
                },
                "id": 9
            },
            "contracts/common/implementation/Lockable.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/Lockable.sol",
                    "exportedSymbols": {
                        "Lockable": [
                            3630
                        ]
                    },
                    "id": 3631,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3571,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:10"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Lockable",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 3572,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:337:10",
                                "text": " @title A contract that provides modifiers to prevent reentrancy to state-changing and view-only methods. This contract\n is inspired by https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/ReentrancyGuard.sol\n and https://github.com/balancer-labs/balancer-core/blob/master/contracts/BPool.sol."
                            },
                            "fullyImplemented": true,
                            "id": 3630,
                            "linearizedBaseContracts": [
                                3630
                            ],
                            "name": "Lockable",
                            "nameLocation": "414:8:10",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "id": 3574,
                                    "mutability": "mutable",
                                    "name": "_notEntered",
                                    "nameLocation": "442:11:10",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3630,
                                    "src": "429:24:10",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 3573,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "429:4:10",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 3581,
                                        "nodeType": "Block",
                                        "src": "474:425:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3579,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3577,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3574,
                                                        "src": "874:11:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 3578,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "888:4:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "874:18:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 3580,
                                                "nodeType": "ExpressionStatement",
                                                "src": "874:18:10"
                                            }
                                        ]
                                    },
                                    "id": 3582,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3575,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "471:2:10"
                                    },
                                    "returnParameters": {
                                        "id": 3576,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "474:0:10"
                                    },
                                    "scope": 3630,
                                    "src": "460:439:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3595,
                                        "nodeType": "Block",
                                        "src": "1307:104:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 3585,
                                                        "name": "_preEntranceCheck",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3613,
                                                        "src": "1317:17:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 3586,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1317:19:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3587,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1317:19:10"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 3588,
                                                        "name": "_preEntranceSet",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3621,
                                                        "src": "1346:15:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 3589,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1346:17:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3590,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1346:17:10"
                                            },
                                            {
                                                "id": 3591,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1373:1:10"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 3592,
                                                        "name": "_postEntranceReset",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3629,
                                                        "src": "1384:18:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 3593,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1384:20:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3594,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1384:20:10"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3583,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "905:373:10",
                                        "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant` function is not supported. It is possible to\n prevent this from happening by making the `nonReentrant` function external, and making it call a `private`\n function that does the actual state modification."
                                    },
                                    "id": 3596,
                                    "name": "nonReentrant",
                                    "nameLocation": "1292:12:10",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 3584,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1304:2:10"
                                    },
                                    "src": "1283:128:10",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3603,
                                        "nodeType": "Block",
                                        "src": "1593:47:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 3599,
                                                        "name": "_preEntranceCheck",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3613,
                                                        "src": "1603:17:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                                            "typeString": "function () view"
                                                        }
                                                    },
                                                    "id": 3600,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1603:19:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3601,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1603:19:10"
                                            },
                                            {
                                                "id": 3602,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "1632:1:10"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3597,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1417:143:10",
                                        "text": " @dev Designed to prevent a view-only method from being re-entered during a call to a `nonReentrant()` state-changing method."
                                    },
                                    "id": 3604,
                                    "name": "nonReentrantView",
                                    "nameLocation": "1574:16:10",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 3598,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1590:2:10"
                                    },
                                    "src": "1565:75:10",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3612,
                                        "nodeType": "Block",
                                        "src": "2186:143:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 3608,
                                                            "name": "_notEntered",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3574,
                                                            "src": "2275:11:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                                                            "id": 3609,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "2288:33:10",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                                                            },
                                                            "value": "ReentrancyGuard: reentrant call"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                                                            }
                                                        ],
                                                        "id": 3607,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "2267:7:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 3610,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2267:55:10",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3611,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2267:55:10"
                                            }
                                        ]
                                    },
                                    "id": 3613,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_preEntranceCheck",
                                    "nameLocation": "2152:17:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3605,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2169:2:10"
                                    },
                                    "returnParameters": {
                                        "id": 3606,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2186:0:10"
                                    },
                                    "scope": 3630,
                                    "src": "2143:186:10",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3620,
                                        "nodeType": "Block",
                                        "src": "2371:100:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3618,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3616,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3574,
                                                        "src": "2445:11:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "66616c7365",
                                                        "id": 3617,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2459:5:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "false"
                                                    },
                                                    "src": "2445:19:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 3619,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2445:19:10"
                                            }
                                        ]
                                    },
                                    "id": 3621,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_preEntranceSet",
                                    "nameLocation": "2344:15:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3614,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2359:2:10"
                                    },
                                    "returnParameters": {
                                        "id": 3615,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2371:0:10"
                                    },
                                    "scope": 3630,
                                    "src": "2335:136:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3628,
                                        "nodeType": "Block",
                                        "src": "2516:167:10",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3626,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3624,
                                                        "name": "_notEntered",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3574,
                                                        "src": "2658:11:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "hexValue": "74727565",
                                                        "id": 3625,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "bool",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "2672:4:10",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "value": "true"
                                                    },
                                                    "src": "2658:18:10",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 3627,
                                                "nodeType": "ExpressionStatement",
                                                "src": "2658:18:10"
                                            }
                                        ]
                                    },
                                    "id": 3629,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_postEntranceReset",
                                    "nameLocation": "2486:18:10",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3622,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2504:2:10"
                                    },
                                    "returnParameters": {
                                        "id": 3623,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "2516:0:10"
                                    },
                                    "scope": 3630,
                                    "src": "2477:206:10",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                }
                            ],
                            "scope": 3631,
                            "src": "405:2280:10",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:2644:10"
                },
                "id": 10
            },
            "contracts/common/implementation/MultiCaller.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/MultiCaller.sol",
                    "exportedSymbols": {
                        "MultiCaller": [
                            3717
                        ]
                    },
                    "id": 3718,
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3632,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "375:23:11"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "MultiCaller",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 3633,
                                "nodeType": "StructuredDocumentation",
                                "src": "400:101:11",
                                "text": "@title MultiCaller\n @notice Enables calling multiple methods in a single call to the contract"
                            },
                            "fullyImplemented": true,
                            "id": 3717,
                            "linearizedBaseContracts": [
                                3717
                            ],
                            "name": "MultiCaller",
                            "nameLocation": "510:11:11",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 3715,
                                        "nodeType": "Block",
                                        "src": "620:618:11",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 3646,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 3643,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "638:3:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 3644,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "value",
                                                                "nodeType": "MemberAccess",
                                                                "src": "638:9:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "hexValue": "30",
                                                                "id": 3645,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "651:1:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0"
                                                            },
                                                            "src": "638:14:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4f6e6c79206d756c746963616c6c207769746820302076616c7565",
                                                            "id": 3647,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "654:29:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a",
                                                                "typeString": "literal_string \"Only multicall with 0 value\""
                                                            },
                                                            "value": "Only multicall with 0 value"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_af0efa74e499035552297731bcfd33dc4be86291e090baaa413932deda73ee1a",
                                                                "typeString": "literal_string \"Only multicall with 0 value\""
                                                            }
                                                        ],
                                                        "id": 3642,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "630:7:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 3648,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "630:54:11",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3649,
                                                "nodeType": "ExpressionStatement",
                                                "src": "630:54:11"
                                            },
                                            {
                                                "expression": {
                                                    "id": 3657,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3650,
                                                        "name": "results",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3640,
                                                        "src": "694:7:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "bytes memory[] memory"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 3654,
                                                                    "name": "data",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3636,
                                                                    "src": "716:4:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                                        "typeString": "bytes calldata[] calldata"
                                                                    }
                                                                },
                                                                "id": 3655,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "length",
                                                                "nodeType": "MemberAccess",
                                                                "src": "716:11:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 3653,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "NewExpression",
                                                            "src": "704:11:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$",
                                                                "typeString": "function (uint256) pure returns (bytes memory[] memory)"
                                                            },
                                                            "typeName": {
                                                                "baseType": {
                                                                    "id": 3651,
                                                                    "name": "bytes",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "708:5:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                                        "typeString": "bytes"
                                                                    }
                                                                },
                                                                "id": 3652,
                                                                "nodeType": "ArrayTypeName",
                                                                "src": "708:7:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                                                    "typeString": "bytes[]"
                                                                }
                                                            }
                                                        },
                                                        "id": 3656,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "704:24:11",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                            "typeString": "bytes memory[] memory"
                                                        }
                                                    },
                                                    "src": "694:34:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                        "typeString": "bytes memory[] memory"
                                                    }
                                                },
                                                "id": 3658,
                                                "nodeType": "ExpressionStatement",
                                                "src": "694:34:11"
                                            },
                                            {
                                                "body": {
                                                    "id": 3713,
                                                    "nodeType": "Block",
                                                    "src": "780:452:11",
                                                    "statements": [
                                                        {
                                                            "assignments": [
                                                                3671,
                                                                3673
                                                            ],
                                                            "declarations": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 3671,
                                                                    "mutability": "mutable",
                                                                    "name": "success",
                                                                    "nameLocation": "800:7:11",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 3713,
                                                                    "src": "795:12:11",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3670,
                                                                        "name": "bool",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "795:4:11",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                },
                                                                {
                                                                    "constant": false,
                                                                    "id": 3673,
                                                                    "mutability": "mutable",
                                                                    "name": "result",
                                                                    "nameLocation": "822:6:11",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 3713,
                                                                    "src": "809:19:11",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "memory",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3672,
                                                                        "name": "bytes",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "809:5:11",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                                            "typeString": "bytes"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "id": 3683,
                                                            "initialValue": {
                                                                "arguments": [
                                                                    {
                                                                        "baseExpression": {
                                                                            "id": 3679,
                                                                            "name": "data",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3636,
                                                                            "src": "859:4:11",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                                                "typeString": "bytes calldata[] calldata"
                                                                            }
                                                                        },
                                                                        "id": 3681,
                                                                        "indexExpression": {
                                                                            "id": 3680,
                                                                            "name": "i",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3660,
                                                                            "src": "864:1:11",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "IndexAccess",
                                                                        "src": "859:7:11",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                                            "typeString": "bytes calldata"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes_calldata_ptr",
                                                                            "typeString": "bytes calldata"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 3676,
                                                                                "name": "this",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -28,
                                                                                "src": "840:4:11",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_contract$_MultiCaller_$3717",
                                                                                    "typeString": "contract MultiCaller"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_contract$_MultiCaller_$3717",
                                                                                    "typeString": "contract MultiCaller"
                                                                                }
                                                                            ],
                                                                            "id": 3675,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "832:7:11",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                                "typeString": "type(address)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 3674,
                                                                                "name": "address",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "832:7:11",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 3677,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "832:13:11",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "id": 3678,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "delegatecall",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "832:26:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                                                        "typeString": "function (bytes memory) returns (bool,bytes memory)"
                                                                    }
                                                                },
                                                                "id": 3682,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "832:35:11",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                                                    "typeString": "tuple(bool,bytes memory)"
                                                                }
                                                            },
                                                            "nodeType": "VariableDeclarationStatement",
                                                            "src": "794:73:11"
                                                        },
                                                        {
                                                            "condition": {
                                                                "id": 3685,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "!",
                                                                "prefix": true,
                                                                "src": "886:8:11",
                                                                "subExpression": {
                                                                    "id": 3684,
                                                                    "name": "success",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3671,
                                                                    "src": "887:7:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "id": 3706,
                                                            "nodeType": "IfStatement",
                                                            "src": "882:306:11",
                                                            "trueBody": {
                                                                "id": 3705,
                                                                "nodeType": "Block",
                                                                "src": "896:292:11",
                                                                "statements": [
                                                                    {
                                                                        "condition": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 3689,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "expression": {
                                                                                    "id": 3686,
                                                                                    "name": "result",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 3673,
                                                                                    "src": "998:6:11",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                                        "typeString": "bytes memory"
                                                                                    }
                                                                                },
                                                                                "id": 3687,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "length",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "998:13:11",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "<",
                                                                            "rightExpression": {
                                                                                "hexValue": "3638",
                                                                                "id": 3688,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "1014:2:11",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_68_by_1",
                                                                                    "typeString": "int_const 68"
                                                                                },
                                                                                "value": "68"
                                                                            },
                                                                            "src": "998:18:11",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "id": 3693,
                                                                        "nodeType": "IfStatement",
                                                                        "src": "994:32:11",
                                                                        "trueBody": {
                                                                            "expression": {
                                                                                "arguments": [],
                                                                                "expression": {
                                                                                    "argumentTypes": [],
                                                                                    "id": 3690,
                                                                                    "name": "revert",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [
                                                                                        -19,
                                                                                        -19
                                                                                    ],
                                                                                    "referencedDeclaration": -19,
                                                                                    "src": "1018:6:11",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_revert_pure$__$returns$__$",
                                                                                        "typeString": "function () pure"
                                                                                    }
                                                                                },
                                                                                "id": 3691,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "1018:8:11",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_tuple$__$",
                                                                                    "typeString": "tuple()"
                                                                                }
                                                                            },
                                                                            "id": 3692,
                                                                            "nodeType": "ExpressionStatement",
                                                                            "src": "1018:8:11"
                                                                        }
                                                                    },
                                                                    {
                                                                        "AST": {
                                                                            "nodeType": "YulBlock",
                                                                            "src": "1053:67:11",
                                                                            "statements": [
                                                                                {
                                                                                    "nodeType": "YulAssignment",
                                                                                    "src": "1075:27:11",
                                                                                    "value": {
                                                                                        "arguments": [
                                                                                            {
                                                                                                "name": "result",
                                                                                                "nodeType": "YulIdentifier",
                                                                                                "src": "1089:6:11"
                                                                                            },
                                                                                            {
                                                                                                "kind": "number",
                                                                                                "nodeType": "YulLiteral",
                                                                                                "src": "1097:4:11",
                                                                                                "type": "",
                                                                                                "value": "0x04"
                                                                                            }
                                                                                        ],
                                                                                        "functionName": {
                                                                                            "name": "add",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1085:3:11"
                                                                                        },
                                                                                        "nodeType": "YulFunctionCall",
                                                                                        "src": "1085:17:11"
                                                                                    },
                                                                                    "variableNames": [
                                                                                        {
                                                                                            "name": "result",
                                                                                            "nodeType": "YulIdentifier",
                                                                                            "src": "1075:6:11"
                                                                                        }
                                                                                    ]
                                                                                }
                                                                            ]
                                                                        },
                                                                        "evmVersion": "london",
                                                                        "externalReferences": [
                                                                            {
                                                                                "declaration": 3673,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "1075:6:11",
                                                                                "valueSize": 1
                                                                            },
                                                                            {
                                                                                "declaration": 3673,
                                                                                "isOffset": false,
                                                                                "isSlot": false,
                                                                                "src": "1089:6:11",
                                                                                "valueSize": 1
                                                                            }
                                                                        ],
                                                                        "id": 3694,
                                                                        "nodeType": "InlineAssembly",
                                                                        "src": "1044:76:11"
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "arguments": [
                                                                                {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 3698,
                                                                                            "name": "result",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3673,
                                                                                            "src": "1155:6:11",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                "typeString": "bytes memory"
                                                                                            }
                                                                                        },
                                                                                        {
                                                                                            "components": [
                                                                                                {
                                                                                                    "id": 3700,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                                    "src": "1164:6:11",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                                                                        "typeString": "type(string storage pointer)"
                                                                                                    },
                                                                                                    "typeName": {
                                                                                                        "id": 3699,
                                                                                                        "name": "string",
                                                                                                        "nodeType": "ElementaryTypeName",
                                                                                                        "src": "1164:6:11",
                                                                                                        "typeDescriptions": {}
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "id": 3701,
                                                                                            "isConstant": false,
                                                                                            "isInlineArray": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "TupleExpression",
                                                                                            "src": "1163:8:11",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                                                                "typeString": "type(string storage pointer)"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                                                "typeString": "bytes memory"
                                                                                            },
                                                                                            {
                                                                                                "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                                                                                "typeString": "type(string storage pointer)"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "id": 3696,
                                                                                            "name": "abi",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": -1,
                                                                                            "src": "1144:3:11",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_magic_abi",
                                                                                                "typeString": "abi"
                                                                                            }
                                                                                        },
                                                                                        "id": 3697,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "decode",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "src": "1144:10:11",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                                                                            "typeString": "function () pure"
                                                                                        }
                                                                                    },
                                                                                    "id": 3702,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "functionCall",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "1144:28:11",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                    }
                                                                                ],
                                                                                "id": 3695,
                                                                                "name": "revert",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [
                                                                                    -19,
                                                                                    -19
                                                                                ],
                                                                                "referencedDeclaration": -19,
                                                                                "src": "1137:6:11",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                                                                    "typeString": "function (string memory) pure"
                                                                                }
                                                                            },
                                                                            "id": 3703,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "functionCall",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "1137:36:11",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_tuple$__$",
                                                                                "typeString": "tuple()"
                                                                            }
                                                                        },
                                                                        "id": 3704,
                                                                        "nodeType": "ExpressionStatement",
                                                                        "src": "1137:36:11"
                                                                    }
                                                                ]
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 3711,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "baseExpression": {
                                                                        "id": 3707,
                                                                        "name": "results",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3640,
                                                                        "src": "1202:7:11",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                                            "typeString": "bytes memory[] memory"
                                                                        }
                                                                    },
                                                                    "id": 3709,
                                                                    "indexExpression": {
                                                                        "id": 3708,
                                                                        "name": "i",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3660,
                                                                        "src": "1210:1:11",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": true,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "1202:10:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 3710,
                                                                    "name": "result",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3673,
                                                                    "src": "1215:6:11",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                                        "typeString": "bytes memory"
                                                                    }
                                                                },
                                                                "src": "1202:19:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                                    "typeString": "bytes memory"
                                                                }
                                                            },
                                                            "id": 3712,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "1202:19:11"
                                                        }
                                                    ]
                                                },
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 3666,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3663,
                                                        "name": "i",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3660,
                                                        "src": "758:1:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 3664,
                                                            "name": "data",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3636,
                                                            "src": "762:4:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                                "typeString": "bytes calldata[] calldata"
                                                            }
                                                        },
                                                        "id": 3665,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "length",
                                                        "nodeType": "MemberAccess",
                                                        "src": "762:11:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "758:15:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 3714,
                                                "initializationExpression": {
                                                    "assignments": [
                                                        3660
                                                    ],
                                                    "declarations": [
                                                        {
                                                            "constant": false,
                                                            "id": 3660,
                                                            "mutability": "mutable",
                                                            "name": "i",
                                                            "nameLocation": "751:1:11",
                                                            "nodeType": "VariableDeclaration",
                                                            "scope": 3714,
                                                            "src": "743:9:11",
                                                            "stateVariable": false,
                                                            "storageLocation": "default",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "typeName": {
                                                                "id": 3659,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "743:7:11",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "visibility": "internal"
                                                        }
                                                    ],
                                                    "id": 3662,
                                                    "initialValue": {
                                                        "hexValue": "30",
                                                        "id": 3661,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "755:1:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "nodeType": "VariableDeclarationStatement",
                                                    "src": "743:13:11"
                                                },
                                                "loopExpression": {
                                                    "expression": {
                                                        "id": 3668,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "UnaryOperation",
                                                        "operator": "++",
                                                        "prefix": false,
                                                        "src": "775:3:11",
                                                        "subExpression": {
                                                            "id": 3667,
                                                            "name": "i",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3660,
                                                            "src": "775:1:11",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 3669,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "775:3:11"
                                                },
                                                "nodeType": "ForStatement",
                                                "src": "738:494:11"
                                            }
                                        ]
                                    },
                                    "functionSelector": "ac9650d8",
                                    "id": 3716,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "multicall",
                                    "nameLocation": "537:9:11",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3637,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3636,
                                                "mutability": "mutable",
                                                "name": "data",
                                                "nameLocation": "564:4:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3716,
                                                "src": "547:21:11",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                                                    "typeString": "bytes[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 3634,
                                                        "name": "bytes",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "547:5:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                            "typeString": "bytes"
                                                        }
                                                    },
                                                    "id": 3635,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "547:7:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                                        "typeString": "bytes[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "546:23:11"
                                    },
                                    "returnParameters": {
                                        "id": 3641,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3640,
                                                "mutability": "mutable",
                                                "name": "results",
                                                "nameLocation": "611:7:11",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3716,
                                                "src": "596:22:11",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "bytes[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 3638,
                                                        "name": "bytes",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "596:5:11",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes_storage_ptr",
                                                            "typeString": "bytes"
                                                        }
                                                    },
                                                    "id": 3639,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "596:7:11",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                                                        "typeString": "bytes[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "595:24:11"
                                    },
                                    "scope": 3717,
                                    "src": "528:710:11",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 3718,
                            "src": "501:739:11",
                            "usedErrors": []
                        }
                    ],
                    "src": "375:866:11"
                },
                "id": 11
            },
            "contracts/common/implementation/Testable.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/Testable.sol",
                    "exportedSymbols": {
                        "Testable": [
                            3790
                        ],
                        "Timer": [
                            3825
                        ]
                    },
                    "id": 3791,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3719,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:12"
                        },
                        {
                            "absolutePath": "contracts/common/implementation/Timer.sol",
                            "file": "./Timer.sol",
                            "id": 3720,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 3791,
                            "sourceUnit": 3826,
                            "src": "67:21:12",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "Testable",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 3721,
                                "nodeType": "StructuredDocumentation",
                                "src": "90:94:12",
                                "text": " @title Base class that provides time overrides, but only if being run in test mode."
                            },
                            "fullyImplemented": true,
                            "id": 3790,
                            "linearizedBaseContracts": [
                                3790
                            ],
                            "name": "Testable",
                            "nameLocation": "203:8:12",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "functionSelector": "1c39c38d",
                                    "id": 3723,
                                    "mutability": "mutable",
                                    "name": "timerAddress",
                                    "nameLocation": "406:12:12",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3790,
                                    "src": "391:27:12",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3722,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "391:7:12",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3733,
                                        "nodeType": "Block",
                                        "src": "718:45:12",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3731,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3729,
                                                        "name": "timerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "728:12:12",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 3730,
                                                        "name": "_timerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3726,
                                                        "src": "743:13:12",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "728:28:12",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 3732,
                                                "nodeType": "ExpressionStatement",
                                                "src": "728:28:12"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3724,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "425:253:12",
                                        "text": " @notice Constructs the Testable contract. Called by child contracts.\n @param _timerAddress Contract that stores the current time in a testing environment.\n Must be set to 0x0 for production environments that use live time."
                                    },
                                    "id": 3734,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3727,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3726,
                                                "mutability": "mutable",
                                                "name": "_timerAddress",
                                                "nameLocation": "703:13:12",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3734,
                                                "src": "695:21:12",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3725,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "695:7:12",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "694:23:12"
                                    },
                                    "returnParameters": {
                                        "id": 3728,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "718:0:12"
                                    },
                                    "scope": 3790,
                                    "src": "683:80:12",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3747,
                                        "nodeType": "Block",
                                        "src": "857:65:12",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 3743,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 3738,
                                                                "name": "timerAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3723,
                                                                "src": "875:12:12",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "!=",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "307830",
                                                                        "id": 3741,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "899:3:12",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        },
                                                                        "value": "0x0"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_rational_0_by_1",
                                                                            "typeString": "int_const 0"
                                                                        }
                                                                    ],
                                                                    "id": 3740,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "891:7:12",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 3739,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "891:7:12",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 3742,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "891:12:12",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "875:28:12",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 3737,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "867:7:12",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                                                            "typeString": "function (bool) pure"
                                                        }
                                                    },
                                                    "id": 3744,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "867:37:12",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3745,
                                                "nodeType": "ExpressionStatement",
                                                "src": "867:37:12"
                                            },
                                            {
                                                "id": 3746,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "914:1:12"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3735,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "769:63:12",
                                        "text": " @notice Reverts if not running in test mode."
                                    },
                                    "id": 3748,
                                    "name": "onlyIfTest",
                                    "nameLocation": "846:10:12",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 3736,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "857:0:12"
                                    },
                                    "src": "837:85:12",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 3763,
                                        "nodeType": "Block",
                                        "src": "1155:57:12",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 3760,
                                                            "name": "time",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3751,
                                                            "src": "1200:4:12",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 3757,
                                                                    "name": "timerAddress",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3723,
                                                                    "src": "1171:12:12",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 3756,
                                                                "name": "Timer",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3825,
                                                                "src": "1165:5:12",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_Timer_$3825_$",
                                                                    "typeString": "type(contract Timer)"
                                                                }
                                                            },
                                                            "id": 3758,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "1165:19:12",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_Timer_$3825",
                                                                "typeString": "contract Timer"
                                                            }
                                                        },
                                                        "id": 3759,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "setCurrentTime",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3815,
                                                        "src": "1165:34:12",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256) external"
                                                        }
                                                    },
                                                    "id": 3761,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "1165:40:12",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 3762,
                                                "nodeType": "ExpressionStatement",
                                                "src": "1165:40:12"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3749,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "928:164:12",
                                        "text": " @notice Sets the current time.\n @dev Will revert if not running in test mode.\n @param time timestamp to set current Testable time to."
                                    },
                                    "functionSelector": "22f8e566",
                                    "id": 3764,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "id": 3754,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 3753,
                                                "name": "onlyIfTest",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3748,
                                                "src": "1144:10:12"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "1144:10:12"
                                        }
                                    ],
                                    "name": "setCurrentTime",
                                    "nameLocation": "1106:14:12",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3752,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3751,
                                                "mutability": "mutable",
                                                "name": "time",
                                                "nameLocation": "1129:4:12",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3764,
                                                "src": "1121:12:12",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3750,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1121:7:12",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1120:14:12"
                                    },
                                    "returnParameters": {
                                        "id": 3755,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1155:0:12"
                                    },
                                    "scope": 3790,
                                    "src": "1097:115:12",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 3788,
                                        "nodeType": "Block",
                                        "src": "1521:212:12",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 3775,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 3770,
                                                        "name": "timerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3723,
                                                        "src": "1535:12:12",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "!=",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "hexValue": "307830",
                                                                "id": 3773,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "1559:3:12",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                },
                                                                "value": "0x0"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_rational_0_by_1",
                                                                    "typeString": "int_const 0"
                                                                }
                                                            ],
                                                            "id": 3772,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "1551:7:12",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                "typeString": "type(address)"
                                                            },
                                                            "typeName": {
                                                                "id": 3771,
                                                                "name": "address",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "1551:7:12",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 3774,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "1551:12:12",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "1535:28:12",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 3786,
                                                    "nodeType": "Block",
                                                    "src": "1639:88:12",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "expression": {
                                                                    "id": 3783,
                                                                    "name": "block",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -4,
                                                                    "src": "1660:5:12",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_block",
                                                                        "typeString": "block"
                                                                    }
                                                                },
                                                                "id": 3784,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "timestamp",
                                                                "nodeType": "MemberAccess",
                                                                "src": "1660:15:12",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "functionReturnParameters": 3769,
                                                            "id": 3785,
                                                            "nodeType": "Return",
                                                            "src": "1653:22:12"
                                                        }
                                                    ]
                                                },
                                                "id": 3787,
                                                "nodeType": "IfStatement",
                                                "src": "1531:196:12",
                                                "trueBody": {
                                                    "id": 3782,
                                                    "nodeType": "Block",
                                                    "src": "1565:68:12",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 3777,
                                                                                "name": "timerAddress",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3723,
                                                                                "src": "1592:12:12",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 3776,
                                                                            "name": "Timer",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3825,
                                                                            "src": "1586:5:12",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_Timer_$3825_$",
                                                                                "typeString": "type(contract Timer)"
                                                                            }
                                                                        },
                                                                        "id": 3778,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "1586:19:12",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_Timer_$3825",
                                                                            "typeString": "contract Timer"
                                                                        }
                                                                    },
                                                                    "id": 3779,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "getCurrentTime",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3824,
                                                                    "src": "1586:34:12",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view external returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 3780,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "1586:36:12",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "functionReturnParameters": 3769,
                                                            "id": 3781,
                                                            "nodeType": "Return",
                                                            "src": "1579:43:12"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3765,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1218:234:12",
                                        "text": " @notice Gets the current time. Will return the last time set in `setCurrentTime` if running in test mode.\n Otherwise, it will return the block timestamp.\n @return uint for the current Testable timestamp."
                                    },
                                    "functionSelector": "29cb924d",
                                    "id": 3789,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getCurrentTime",
                                    "nameLocation": "1466:14:12",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3766,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1480:2:12"
                                    },
                                    "returnParameters": {
                                        "id": 3769,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3768,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3789,
                                                "src": "1512:7:12",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3767,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1512:7:12",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1511:9:12"
                                    },
                                    "scope": 3790,
                                    "src": "1457:276:12",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 3791,
                            "src": "185:1550:12",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1694:12"
                },
                "id": 12
            },
            "contracts/common/implementation/Timer.sol": {
                "ast": {
                    "absolutePath": "contracts/common/implementation/Timer.sol",
                    "exportedSymbols": {
                        "Timer": [
                            3825
                        ]
                    },
                    "id": 3826,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3792,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:13"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "Timer",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 3793,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:84:13",
                                "text": " @title Universal store of current contract time for testing environments."
                            },
                            "fullyImplemented": true,
                            "id": 3825,
                            "linearizedBaseContracts": [
                                3825
                            ],
                            "name": "Timer",
                            "nameLocation": "161:5:13",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": false,
                                    "id": 3795,
                                    "mutability": "mutable",
                                    "name": "currentTime",
                                    "nameLocation": "189:11:13",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3825,
                                    "src": "173:27:13",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3794,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "173:7:13",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 3803,
                                        "nodeType": "Block",
                                        "src": "221:87:13",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3801,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3798,
                                                        "name": "currentTime",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3795,
                                                        "src": "231:11:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 3799,
                                                            "name": "block",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -4,
                                                            "src": "245:5:13",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_block",
                                                                "typeString": "block"
                                                            }
                                                        },
                                                        "id": 3800,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "timestamp",
                                                        "nodeType": "MemberAccess",
                                                        "src": "245:15:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "231:29:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 3802,
                                                "nodeType": "ExpressionStatement",
                                                "src": "231:29:13"
                                            }
                                        ]
                                    },
                                    "id": 3804,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3796,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "218:2:13"
                                    },
                                    "returnParameters": {
                                        "id": 3797,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "221:0:13"
                                    },
                                    "scope": 3825,
                                    "src": "207:101:13",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 3814,
                                        "nodeType": "Block",
                                        "src": "522:35:13",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3812,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 3810,
                                                        "name": "currentTime",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3795,
                                                        "src": "532:11:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 3811,
                                                        "name": "time",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3807,
                                                        "src": "546:4:13",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "532:18:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 3813,
                                                "nodeType": "ExpressionStatement",
                                                "src": "532:18:13"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3805,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "314:156:13",
                                        "text": " @notice Sets the current time.\n @dev Will revert if not running in test mode.\n @param time timestamp to set `currentTime` to."
                                    },
                                    "functionSelector": "22f8e566",
                                    "id": 3815,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setCurrentTime",
                                    "nameLocation": "484:14:13",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3808,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3807,
                                                "mutability": "mutable",
                                                "name": "time",
                                                "nameLocation": "507:4:13",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3815,
                                                "src": "499:12:13",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3806,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "499:7:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "498:14:13"
                                    },
                                    "returnParameters": {
                                        "id": 3809,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "522:0:13"
                                    },
                                    "scope": 3825,
                                    "src": "475:82:13",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "body": {
                                        "id": 3823,
                                        "nodeType": "Block",
                                        "src": "757:35:13",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 3821,
                                                    "name": "currentTime",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3795,
                                                    "src": "774:11:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 3820,
                                                "id": 3822,
                                                "nodeType": "Return",
                                                "src": "767:18:13"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 3816,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "563:133:13",
                                        "text": " @notice Gets the currentTime variable set in the Timer.\n @return uint256 for the current Testable timestamp."
                                    },
                                    "functionSelector": "29cb924d",
                                    "id": 3824,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getCurrentTime",
                                    "nameLocation": "710:14:13",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3817,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "724:2:13"
                                    },
                                    "returnParameters": {
                                        "id": 3820,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3819,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3824,
                                                "src": "748:7:13",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3818,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "748:7:13",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "747:9:13"
                                    },
                                    "scope": 3825,
                                    "src": "701:91:13",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 3826,
                            "src": "152:642:13",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:753:13"
                },
                "id": 13
            },
            "contracts/insured-bridge/BridgePool.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/BridgePool.sol",
                    "exportedSymbols": {
                        "Address": [
                            1129
                        ],
                        "AncillaryData": [
                            1936
                        ],
                        "BridgeAdminInterface": [
                            6109
                        ],
                        "BridgePool": [
                            5950
                        ],
                        "BridgePoolInterface": [
                            6134
                        ],
                        "BridgePoolProd": [
                            5991
                        ],
                        "Context": [
                            1152
                        ],
                        "ERC20": [
                            506
                        ],
                        "FinderInterface": [
                            6193
                        ],
                        "FixedPoint": [
                            3569
                        ],
                        "IERC20": [
                            584
                        ],
                        "IERC20Metadata": [
                            609
                        ],
                        "Lockable": [
                            3630
                        ],
                        "MultiCaller": [
                            3717
                        ],
                        "OptimisticOracleConstraints": [
                            6173
                        ],
                        "OptimisticOracleInterface": [
                            6431
                        ],
                        "OracleInterfaces": [
                            6168
                        ],
                        "SafeERC20": [
                            833
                        ],
                        "SafeMath": [
                            1464
                        ],
                        "SignedSafeMath": [
                            1528
                        ],
                        "SkinnyOptimisticOracleInterface": [
                            6650
                        ],
                        "StoreInterface": [
                            6695
                        ],
                        "Testable": [
                            3790
                        ],
                        "Timer": [
                            3825
                        ],
                        "WETH9Like": [
                            3851
                        ]
                    },
                    "id": 5992,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 3827,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:14"
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol",
                            "file": "./interfaces/BridgeAdminInterface.sol",
                            "id": 3828,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 6110,
                            "src": "67:47:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/insured-bridge/interfaces/BridgePoolInterface.sol",
                            "file": "./interfaces/BridgePoolInterface.sol",
                            "id": 3829,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 6135,
                            "src": "115:46:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol",
                            "file": "../oracle/interfaces/SkinnyOptimisticOracleInterface.sol",
                            "id": 3830,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 6651,
                            "src": "163:66:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/interfaces/StoreInterface.sol",
                            "file": "../oracle/interfaces/StoreInterface.sol",
                            "id": 3831,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 6696,
                            "src": "230:49:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/interfaces/FinderInterface.sol",
                            "file": "../oracle/interfaces/FinderInterface.sol",
                            "id": 3832,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 6194,
                            "src": "280:50:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/implementation/Constants.sol",
                            "file": "../oracle/implementation/Constants.sol",
                            "id": 3833,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 6174,
                            "src": "331:48:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/AncillaryData.sol",
                            "file": "../common/implementation/AncillaryData.sol",
                            "id": 3834,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 1937,
                            "src": "381:52:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/Testable.sol",
                            "file": "../common/implementation/Testable.sol",
                            "id": 3835,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 3791,
                            "src": "434:47:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/FixedPoint.sol",
                            "file": "../common/implementation/FixedPoint.sol",
                            "id": 3836,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 3570,
                            "src": "482:49:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/Lockable.sol",
                            "file": "../common/implementation/Lockable.sol",
                            "id": 3837,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 3631,
                            "src": "532:47:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/MultiCaller.sol",
                            "file": "../common/implementation/MultiCaller.sol",
                            "id": 3838,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 3718,
                            "src": "580:50:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 3839,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 585,
                            "src": "632:56:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
                            "id": 3840,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 507,
                            "src": "689:55:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol",
                            "id": 3841,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 834,
                            "src": "745:65:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/utils/Address.sol",
                            "file": "@openzeppelin/contracts/utils/Address.sol",
                            "id": 3842,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 5992,
                            "sourceUnit": 1130,
                            "src": "811:51:14",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "WETH9Like",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 3851,
                            "linearizedBaseContracts": [
                                3851
                            ],
                            "name": "WETH9Like",
                            "nameLocation": "874:9:14",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "2e1a7d4d",
                                    "id": 3847,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "withdraw",
                                    "nameLocation": "899:8:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3845,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3844,
                                                "mutability": "mutable",
                                                "name": "wad",
                                                "nameLocation": "916:3:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3847,
                                                "src": "908:11:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3843,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "908:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "907:13:14"
                                    },
                                    "returnParameters": {
                                        "id": 3846,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "929:0:14"
                                    },
                                    "scope": 3851,
                                    "src": "890:40:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "d0e30db0",
                                    "id": 3850,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "deposit",
                                    "nameLocation": "945:7:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 3848,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "952:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 3849,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "971:0:14"
                                    },
                                    "scope": 3851,
                                    "src": "936:36:14",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 5992,
                            "src": "864:110:14",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 3853,
                                        "name": "MultiCaller",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3717,
                                        "src": "1670:11:14"
                                    },
                                    "id": 3854,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1670:11:14"
                                },
                                {
                                    "baseName": {
                                        "id": 3855,
                                        "name": "Testable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3790,
                                        "src": "1683:8:14"
                                    },
                                    "id": 3856,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1683:8:14"
                                },
                                {
                                    "baseName": {
                                        "id": 3857,
                                        "name": "BridgePoolInterface",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 6134,
                                        "src": "1693:19:14"
                                    },
                                    "id": 3858,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1693:19:14"
                                },
                                {
                                    "baseName": {
                                        "id": 3859,
                                        "name": "ERC20",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 506,
                                        "src": "1714:5:14"
                                    },
                                    "id": 3860,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1714:5:14"
                                },
                                {
                                    "baseName": {
                                        "id": 3861,
                                        "name": "Lockable",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3630,
                                        "src": "1721:8:14"
                                    },
                                    "id": 3862,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "1721:8:14"
                                }
                            ],
                            "canonicalName": "BridgePool",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 3852,
                                "nodeType": "StructuredDocumentation",
                                "src": "976:670:14",
                                "text": " @notice Contract deployed on L1 that provides methods for \"Relayers\" to fulfill deposit orders that originated on L2.\n The Relayers can either post capital to fulfill the deposit (instant relay), or request that the funds are taken out\n of a passive liquidity provider pool following a challenge period (slow relay). This contract ingests liquidity from\n passive liquidity providers and returns them claims to withdraw their funds. Liquidity providers are incentivized\n to post collateral by earning a fee per fulfilled deposit order.\n @dev A \"Deposit\" is an order to send capital from L2 to L1, and a \"Relay\" is a fulfillment attempt of that order."
                            },
                            "fullyImplemented": true,
                            "id": 5950,
                            "linearizedBaseContracts": [
                                5950,
                                3630,
                                506,
                                609,
                                584,
                                1152,
                                6134,
                                3790,
                                3717
                            ],
                            "name": "BridgePool",
                            "nameLocation": "1656:10:14",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "id": 3866,
                                    "libraryName": {
                                        "id": 3863,
                                        "name": "SafeERC20",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 833,
                                        "src": "1742:9:14"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "1736:27:14",
                                    "typeName": {
                                        "id": 3865,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 3864,
                                            "name": "IERC20",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 584,
                                            "src": "1756:6:14"
                                        },
                                        "referencedDeclaration": 584,
                                        "src": "1756:6:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                            "typeString": "contract IERC20"
                                        }
                                    }
                                },
                                {
                                    "id": 3870,
                                    "libraryName": {
                                        "id": 3867,
                                        "name": "FixedPoint",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 3569,
                                        "src": "1774:10:14"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "1768:41:14",
                                    "typeName": {
                                        "id": 3869,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 3868,
                                            "name": "FixedPoint.Unsigned",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 1955,
                                            "src": "1789:19:14"
                                        },
                                        "referencedDeclaration": 1955,
                                        "src": "1789:19:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                            "typeString": "struct FixedPoint.Unsigned"
                                        }
                                    }
                                },
                                {
                                    "id": 3873,
                                    "libraryName": {
                                        "id": 3871,
                                        "name": "Address",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 1129,
                                        "src": "1820:7:14"
                                    },
                                    "nodeType": "UsingForDirective",
                                    "src": "1814:26:14",
                                    "typeName": {
                                        "id": 3872,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1832:7:14",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    }
                                },
                                {
                                    "baseFunctions": [
                                        6118
                                    ],
                                    "constant": false,
                                    "functionSelector": "c01e1bd6",
                                    "id": 3877,
                                    "mutability": "mutable",
                                    "name": "l1Token",
                                    "nameLocation": "1926:7:14",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": {
                                        "id": 3876,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "1917:8:14"
                                    },
                                    "scope": 5950,
                                    "src": "1903:30:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                        "typeString": "contract IERC20"
                                    },
                                    "typeName": {
                                        "id": 3875,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 3874,
                                            "name": "IERC20",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 584,
                                            "src": "1903:6:14"
                                        },
                                        "referencedDeclaration": 584,
                                        "src": "1903:6:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                            "typeString": "contract IERC20"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "d412f5a4",
                                    "id": 3879,
                                    "mutability": "mutable",
                                    "name": "numberOfRelays",
                                    "nameLocation": "2026:14:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "2012:28:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                    },
                                    "typeName": {
                                        "id": 3878,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2012:6:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "b2084202",
                                    "id": 3881,
                                    "mutability": "mutable",
                                    "name": "liquidReserves",
                                    "nameLocation": "2116:14:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "2101:29:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3880,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2101:7:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "66db5240",
                                    "id": 3883,
                                    "mutability": "mutable",
                                    "name": "utilizedReserves",
                                    "nameLocation": "2223:16:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "2209:30:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                    },
                                    "typeName": {
                                        "id": 3882,
                                        "name": "int256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2209:6:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "87a515d3",
                                    "id": 3885,
                                    "mutability": "mutable",
                                    "name": "pendingReserves",
                                    "nameLocation": "2346:15:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "2331:30:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3884,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2331:7:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "cc2c929e",
                                    "id": 3887,
                                    "mutability": "mutable",
                                    "name": "isWethPool",
                                    "nameLocation": "2581:10:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "2569:22:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 3886,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2569:4:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "be0ba122",
                                    "id": 3890,
                                    "mutability": "mutable",
                                    "name": "relaysEnabled",
                                    "nameLocation": "2724:13:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "2712:32:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 3888,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2712:4:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "74727565",
                                        "id": 3889,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2740:4:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "value": "true"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "11cfc159",
                                    "id": 3892,
                                    "mutability": "mutable",
                                    "name": "lpFeeRatePerSecond",
                                    "nameLocation": "2882:18:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "2868:32:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                    },
                                    "typeName": {
                                        "id": 3891,
                                        "name": "uint64",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2868:6:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "f1d24bab",
                                    "id": 3894,
                                    "mutability": "mutable",
                                    "name": "lastLpFeeUpdate",
                                    "nameLocation": "2970:15:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "2956:29:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                    },
                                    "typeName": {
                                        "id": 3893,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2956:6:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "c73a32c3",
                                    "id": 3896,
                                    "mutability": "mutable",
                                    "name": "proposerBondPct",
                                    "nameLocation": "3076:15:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "3062:29:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                    },
                                    "typeName": {
                                        "id": 3895,
                                        "name": "uint64",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3062:6:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "173684c5",
                                    "id": 3898,
                                    "mutability": "mutable",
                                    "name": "optimisticOracleLiveness",
                                    "nameLocation": "3111:24:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "3097:38:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint32",
                                        "typeString": "uint32"
                                    },
                                    "typeName": {
                                        "id": 3897,
                                        "name": "uint32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3097:6:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "id": 3900,
                                    "mutability": "mutable",
                                    "name": "l1TokenFinalFee",
                                    "nameLocation": "3266:15:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "3258:23:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3899,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3258:7:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "4464fae4",
                                    "id": 3902,
                                    "mutability": "mutable",
                                    "name": "undistributedLpFees",
                                    "nameLocation": "3402:19:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "3387:34:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3901,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3387:7:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "135c404e",
                                    "id": 3904,
                                    "mutability": "mutable",
                                    "name": "bonds",
                                    "nameLocation": "3561:5:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "3546:20:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3903,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3546:7:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "a6af2dfe",
                                    "id": 3907,
                                    "mutability": "mutable",
                                    "name": "bridgeAdmin",
                                    "nameLocation": "3722:11:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "3694:39:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                        "typeString": "contract BridgeAdminInterface"
                                    },
                                    "typeName": {
                                        "id": 3906,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 3905,
                                            "name": "BridgeAdminInterface",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 6109,
                                            "src": "3694:20:14"
                                        },
                                        "referencedDeclaration": 6109,
                                        "src": "3694:20:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                            "typeString": "contract BridgeAdminInterface"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "975057e7",
                                    "id": 3910,
                                    "mutability": "mutable",
                                    "name": "store",
                                    "nameLocation": "3936:5:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "3914:27:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_StoreInterface_$6695",
                                        "typeString": "contract StoreInterface"
                                    },
                                    "typeName": {
                                        "id": 3909,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 3908,
                                            "name": "StoreInterface",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 6695,
                                            "src": "3914:14:14"
                                        },
                                        "referencedDeclaration": 6695,
                                        "src": "3914:14:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_StoreInterface_$6695",
                                            "typeString": "contract StoreInterface"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "22302922",
                                    "id": 3913,
                                    "mutability": "mutable",
                                    "name": "optimisticOracle",
                                    "nameLocation": "3986:16:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "3947:55:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                        "typeString": "contract SkinnyOptimisticOracleInterface"
                                    },
                                    "typeName": {
                                        "id": 3912,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                            "id": 3911,
                                            "name": "SkinnyOptimisticOracleInterface",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 6650,
                                            "src": "3947:31:14"
                                        },
                                        "referencedDeclaration": 6650,
                                        "src": "3947:31:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                            "typeString": "contract SkinnyOptimisticOracleInterface"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "7998a1c4",
                                    "id": 3915,
                                    "mutability": "mutable",
                                    "name": "identifier",
                                    "nameLocation": "4119:10:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "4104:25:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 3914,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "4104:7:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "canonicalName": "BridgePool.RelayState",
                                    "id": 3919,
                                    "members": [
                                        {
                                            "id": 3916,
                                            "name": "Uninitialized",
                                            "nameLocation": "5264:13:14",
                                            "nodeType": "EnumValue",
                                            "src": "5264:13:14"
                                        },
                                        {
                                            "id": 3917,
                                            "name": "Pending",
                                            "nameLocation": "5279:7:14",
                                            "nodeType": "EnumValue",
                                            "src": "5279:7:14"
                                        },
                                        {
                                            "id": 3918,
                                            "name": "Finalized",
                                            "nameLocation": "5288:9:14",
                                            "nodeType": "EnumValue",
                                            "src": "5288:9:14"
                                        }
                                    ],
                                    "name": "RelayState",
                                    "nameLocation": "5251:10:14",
                                    "nodeType": "EnumDefinition",
                                    "src": "5246:53:14"
                                },
                                {
                                    "canonicalName": "BridgePool.DepositData",
                                    "id": 3936,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 3921,
                                            "mutability": "mutable",
                                            "name": "chainId",
                                            "nameLocation": "5383:7:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3936,
                                            "src": "5375:15:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 3920,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5375:7:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3923,
                                            "mutability": "mutable",
                                            "name": "depositId",
                                            "nameLocation": "5407:9:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3936,
                                            "src": "5400:16:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                            },
                                            "typeName": {
                                                "id": 3922,
                                                "name": "uint64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5400:6:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3925,
                                            "mutability": "mutable",
                                            "name": "l1Recipient",
                                            "nameLocation": "5442:11:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3936,
                                            "src": "5426:27:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            },
                                            "typeName": {
                                                "id": 3924,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5426:15:14",
                                                "stateMutability": "payable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3927,
                                            "mutability": "mutable",
                                            "name": "l2Sender",
                                            "nameLocation": "5471:8:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3936,
                                            "src": "5463:16:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 3926,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5463:7:14",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3929,
                                            "mutability": "mutable",
                                            "name": "amount",
                                            "nameLocation": "5497:6:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3936,
                                            "src": "5489:14:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 3928,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5489:7:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3931,
                                            "mutability": "mutable",
                                            "name": "slowRelayFeePct",
                                            "nameLocation": "5520:15:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3936,
                                            "src": "5513:22:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                            },
                                            "typeName": {
                                                "id": 3930,
                                                "name": "uint64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5513:6:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3933,
                                            "mutability": "mutable",
                                            "name": "instantRelayFeePct",
                                            "nameLocation": "5552:18:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3936,
                                            "src": "5545:25:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                            },
                                            "typeName": {
                                                "id": 3932,
                                                "name": "uint64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5545:6:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3935,
                                            "mutability": "mutable",
                                            "name": "quoteTimestamp",
                                            "nameLocation": "5587:14:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3936,
                                            "src": "5580:21:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            },
                                            "typeName": {
                                                "id": 3934,
                                                "name": "uint32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5580:6:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "DepositData",
                                    "nameLocation": "5353:11:14",
                                    "nodeType": "StructDefinition",
                                    "scope": 5950,
                                    "src": "5346:262:14",
                                    "visibility": "public"
                                },
                                {
                                    "canonicalName": "BridgePool.RelayData",
                                    "id": 3952,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 3939,
                                            "mutability": "mutable",
                                            "name": "relayState",
                                            "nameLocation": "5770:10:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3952,
                                            "src": "5759:21:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_RelayState_$3919",
                                                "typeString": "enum BridgePool.RelayState"
                                            },
                                            "typeName": {
                                                "id": 3938,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 3937,
                                                    "name": "RelayState",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 3919,
                                                    "src": "5759:10:14"
                                                },
                                                "referencedDeclaration": 3919,
                                                "src": "5759:10:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_RelayState_$3919",
                                                    "typeString": "enum BridgePool.RelayState"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3941,
                                            "mutability": "mutable",
                                            "name": "slowRelayer",
                                            "nameLocation": "5798:11:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3952,
                                            "src": "5790:19:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 3940,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5790:7:14",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3943,
                                            "mutability": "mutable",
                                            "name": "relayId",
                                            "nameLocation": "5826:7:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3952,
                                            "src": "5819:14:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            },
                                            "typeName": {
                                                "id": 3942,
                                                "name": "uint32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5819:6:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3945,
                                            "mutability": "mutable",
                                            "name": "realizedLpFeePct",
                                            "nameLocation": "5850:16:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3952,
                                            "src": "5843:23:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                            },
                                            "typeName": {
                                                "id": 3944,
                                                "name": "uint64",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5843:6:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3947,
                                            "mutability": "mutable",
                                            "name": "priceRequestTime",
                                            "nameLocation": "5883:16:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3952,
                                            "src": "5876:23:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint32",
                                                "typeString": "uint32"
                                            },
                                            "typeName": {
                                                "id": 3946,
                                                "name": "uint32",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5876:6:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3949,
                                            "mutability": "mutable",
                                            "name": "proposerBond",
                                            "nameLocation": "5917:12:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3952,
                                            "src": "5909:20:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 3948,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5909:7:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 3951,
                                            "mutability": "mutable",
                                            "name": "finalFee",
                                            "nameLocation": "5947:8:14",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3952,
                                            "src": "5939:16:14",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 3950,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5939:7:14",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "RelayData",
                                    "nameLocation": "5739:9:14",
                                    "nodeType": "StructDefinition",
                                    "scope": 5950,
                                    "src": "5732:230:14",
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "df738fc8",
                                    "id": 3956,
                                    "mutability": "mutable",
                                    "name": "relays",
                                    "nameLocation": "6314:6:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "6279:41:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                        "typeString": "mapping(bytes32 => bytes32)"
                                    },
                                    "typeName": {
                                        "id": 3955,
                                        "keyType": {
                                            "id": 3953,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6287:7:14",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "6279:27:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                            "typeString": "mapping(bytes32 => bytes32)"
                                        },
                                        "valueType": {
                                            "id": 3954,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6298:7:14",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": false,
                                    "functionSelector": "b454e326",
                                    "id": 3960,
                                    "mutability": "mutable",
                                    "name": "instantRelays",
                                    "nameLocation": "6534:13:14",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 5950,
                                    "src": "6499:48:14",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                        "typeString": "mapping(bytes32 => address)"
                                    },
                                    "typeName": {
                                        "id": 3959,
                                        "keyType": {
                                            "id": 3957,
                                            "name": "bytes32",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6507:7:14",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                            }
                                        },
                                        "nodeType": "Mapping",
                                        "src": "6499:27:14",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                            "typeString": "mapping(bytes32 => address)"
                                        },
                                        "valueType": {
                                            "id": 3958,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6518:7:14",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        }
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3968,
                                    "name": "LiquidityAdded",
                                    "nameLocation": "6560:14:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3967,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3962,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "6583:6:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3968,
                                                "src": "6575:14:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3961,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6575:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3964,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "lpTokensMinted",
                                                "nameLocation": "6599:14:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3968,
                                                "src": "6591:22:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3963,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6591:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3966,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "liquidityProvider",
                                                "nameLocation": "6631:17:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3968,
                                                "src": "6615:33:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3965,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6615:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6574:75:14"
                                    },
                                    "src": "6554:96:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3976,
                                    "name": "LiquidityRemoved",
                                    "nameLocation": "6661:16:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3975,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3970,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "6686:6:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3976,
                                                "src": "6678:14:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3969,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6678:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3972,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "lpTokensBurnt",
                                                "nameLocation": "6702:13:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3976,
                                                "src": "6694:21:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 3971,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6694:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3974,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "liquidityProvider",
                                                "nameLocation": "6733:17:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3976,
                                                "src": "6717:33:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3973,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6717:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6677:74:14"
                                    },
                                    "src": "6655:97:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3988,
                                    "name": "DepositRelayed",
                                    "nameLocation": "6763:14:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3987,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3978,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "depositHash",
                                                "nameLocation": "6803:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3988,
                                                "src": "6787:27:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 3977,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6787:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3981,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "6836:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3988,
                                                "src": "6824:23:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 3980,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3979,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "6824:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "6824:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3984,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "relay",
                                                "nameLocation": "6867:5:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3988,
                                                "src": "6857:15:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 3983,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3982,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "6857:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "6857:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3986,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "relayAncillaryDataHash",
                                                "nameLocation": "6890:22:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3988,
                                                "src": "6882:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 3985,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6882:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6777:141:14"
                                    },
                                    "src": "6757:162:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 3997,
                                    "name": "RelaySpedUp",
                                    "nameLocation": "6930:11:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 3996,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3990,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "depositHash",
                                                "nameLocation": "6958:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3997,
                                                "src": "6942:27:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 3989,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6942:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3992,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "instantRelayer",
                                                "nameLocation": "6987:14:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3997,
                                                "src": "6971:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 3991,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6971:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 3995,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "relay",
                                                "nameLocation": "7013:5:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 3997,
                                                "src": "7003:15:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 3994,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 3993,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "7003:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "7003:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6941:78:14"
                                    },
                                    "src": "6924:96:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 4005,
                                    "name": "RelayDisputed",
                                    "nameLocation": "7364:13:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 4004,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 3999,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "depositHash",
                                                "nameLocation": "7394:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4005,
                                                "src": "7378:27:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 3998,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7378:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4001,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "relayHash",
                                                "nameLocation": "7423:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4005,
                                                "src": "7407:25:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 4000,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7407:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4003,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "disputer",
                                                "nameLocation": "7450:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4005,
                                                "src": "7434:24:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 4002,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7434:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7377:82:14"
                                    },
                                    "src": "7358:102:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 4013,
                                    "name": "RelayCanceled",
                                    "nameLocation": "7471:13:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 4012,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4007,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "depositHash",
                                                "nameLocation": "7501:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4013,
                                                "src": "7485:27:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 4006,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7485:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4009,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "relayHash",
                                                "nameLocation": "7530:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4013,
                                                "src": "7514:25:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 4008,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7514:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4011,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "disputer",
                                                "nameLocation": "7557:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4013,
                                                "src": "7541:24:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 4010,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7541:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7484:82:14"
                                    },
                                    "src": "7465:102:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 4022,
                                    "name": "RelaySettled",
                                    "nameLocation": "7578:12:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 4021,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4015,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "depositHash",
                                                "nameLocation": "7607:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4022,
                                                "src": "7591:27:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 4014,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7591:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4017,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "caller",
                                                "nameLocation": "7636:6:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4022,
                                                "src": "7620:22:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 4016,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7620:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4020,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "relay",
                                                "nameLocation": "7654:5:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4022,
                                                "src": "7644:15:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 4019,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4018,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "7644:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "7644:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7590:70:14"
                                    },
                                    "src": "7572:89:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 4028,
                                    "name": "BridgePoolAdminTransferred",
                                    "nameLocation": "7672:26:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 4027,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4024,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "oldAdmin",
                                                "nameLocation": "7707:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4028,
                                                "src": "7699:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 4023,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7699:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4026,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "7725:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4028,
                                                "src": "7717:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 4025,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7717:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7698:36:14"
                                    },
                                    "src": "7666:69:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 4032,
                                    "name": "RelaysEnabledSet",
                                    "nameLocation": "7746:16:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 4031,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4030,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newRelaysEnabled",
                                                "nameLocation": "7768:16:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4032,
                                                "src": "7763:21:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4029,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7763:4:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7762:23:14"
                                    },
                                    "src": "7740:46:14"
                                },
                                {
                                    "anonymous": false,
                                    "id": 4036,
                                    "name": "LpFeeRateSet",
                                    "nameLocation": "7797:12:14",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 4035,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4034,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newLpFeeRatePerSecond",
                                                "nameLocation": "7817:21:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4036,
                                                "src": "7810:28:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 4033,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7810:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7809:30:14"
                                    },
                                    "src": "7791:49:14"
                                },
                                {
                                    "body": {
                                        "id": 4050,
                                        "nodeType": "Block",
                                        "src": "7873:98:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 4045,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 4039,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "7891:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 4040,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "7891:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4043,
                                                                        "name": "bridgeAdmin",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3907,
                                                                        "src": "7913:11:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                                            "typeString": "contract BridgeAdminInterface"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                                            "typeString": "contract BridgeAdminInterface"
                                                                        }
                                                                    ],
                                                                    "id": 4042,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "7905:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 4041,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "7905:7:14",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 4044,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "7905:20:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "7891:34:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "43616c6c6572206e6f74206272696467652061646d696e",
                                                            "id": 4046,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "7927:25:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_4d52a6da38278ead32cd9f33eb5cd33c43ec96fe5ce1bd6e71fb70656b4cbf2e",
                                                                "typeString": "literal_string \"Caller not bridge admin\""
                                                            },
                                                            "value": "Caller not bridge admin"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_4d52a6da38278ead32cd9f33eb5cd33c43ec96fe5ce1bd6e71fb70656b4cbf2e",
                                                                "typeString": "literal_string \"Caller not bridge admin\""
                                                            }
                                                        ],
                                                        "id": 4038,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "7883:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4047,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7883:70:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4048,
                                                "nodeType": "ExpressionStatement",
                                                "src": "7883:70:14"
                                            },
                                            {
                                                "id": 4049,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "7963:1:14"
                                            }
                                        ]
                                    },
                                    "id": 4051,
                                    "name": "onlyBridgeAdmin",
                                    "nameLocation": "7855:15:14",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 4037,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "7870:2:14"
                                    },
                                    "src": "7846:125:14",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4059,
                                        "nodeType": "Block",
                                        "src": "8007:73:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4054,
                                                            "name": "relaysEnabled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3890,
                                                            "src": "8025:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "52656c617973206172652064697361626c6564",
                                                            "id": 4055,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "8040:21:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_88329e000212abe98d559877c824675fd701dbb3e66db634ca25c1b6e368a147",
                                                                "typeString": "literal_string \"Relays are disabled\""
                                                            },
                                                            "value": "Relays are disabled"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_88329e000212abe98d559877c824675fd701dbb3e66db634ca25c1b6e368a147",
                                                                "typeString": "literal_string \"Relays are disabled\""
                                                            }
                                                        ],
                                                        "id": 4053,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "8017:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4056,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "8017:45:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4057,
                                                "nodeType": "ExpressionStatement",
                                                "src": "8017:45:14"
                                            },
                                            {
                                                "id": 4058,
                                                "nodeType": "PlaceholderStatement",
                                                "src": "8072:1:14"
                                            }
                                        ]
                                    },
                                    "id": 4060,
                                    "name": "onlyIfRelaysEnabld",
                                    "nameLocation": "7986:18:14",
                                    "nodeType": "ModifierDefinition",
                                    "parameters": {
                                        "id": 4052,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8004:2:14"
                                    },
                                    "src": "7977:103:14",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 4142,
                                        "nodeType": "Block",
                                        "src": "9176:627:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 4100,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 4092,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 4088,
                                                                                "name": "_lpTokenName",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4063,
                                                                                "src": "9200:12:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                                    "typeString": "string memory"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                                    "typeString": "string memory"
                                                                                }
                                                                            ],
                                                                            "id": 4087,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "9194:5:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                                                "typeString": "type(bytes storage pointer)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 4086,
                                                                                "name": "bytes",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "9194:5:14",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 4089,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "9194:19:14",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 4090,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "9194:26:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 4091,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "9224:1:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "9194:31:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 4099,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 4095,
                                                                                "name": "_lpTokenSymbol",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4065,
                                                                                "src": "9235:14:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                                    "typeString": "string memory"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                                    "typeString": "string memory"
                                                                                }
                                                                            ],
                                                                            "id": 4094,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "9229:5:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                                                                "typeString": "type(bytes storage pointer)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 4093,
                                                                                "name": "bytes",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "9229:5:14",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 4096,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "9229:21:14",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes_memory_ptr",
                                                                            "typeString": "bytes memory"
                                                                        }
                                                                    },
                                                                    "id": 4097,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "length",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "9229:28:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "!=",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 4098,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "9261:1:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "9229:33:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "9194:68:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "426164204c5020746f6b656e206e616d65206f722073796d626f6c",
                                                            "id": 4101,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "9264:29:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_bbafc52390f55679de28d6789281f62ca2e8900a287d1789da1882ca242675c1",
                                                                "typeString": "literal_string \"Bad LP token name or symbol\""
                                                            },
                                                            "value": "Bad LP token name or symbol"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_bbafc52390f55679de28d6789281f62ca2e8900a287d1789da1882ca242675c1",
                                                                "typeString": "literal_string \"Bad LP token name or symbol\""
                                                            }
                                                        ],
                                                        "id": 4085,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "9186:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4102,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9186:108:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4103,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9186:108:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4108,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4104,
                                                        "name": "bridgeAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3907,
                                                        "src": "9304:11:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                            "typeString": "contract BridgeAdminInterface"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 4106,
                                                                "name": "_bridgeAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4067,
                                                                "src": "9339:12:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 4105,
                                                            "name": "BridgeAdminInterface",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6109,
                                                            "src": "9318:20:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_BridgeAdminInterface_$6109_$",
                                                                "typeString": "type(contract BridgeAdminInterface)"
                                                            }
                                                        },
                                                        "id": 4107,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "9318:34:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                            "typeString": "contract BridgeAdminInterface"
                                                        }
                                                    },
                                                    "src": "9304:48:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                        "typeString": "contract BridgeAdminInterface"
                                                    }
                                                },
                                                "id": 4109,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9304:48:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4114,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4110,
                                                        "name": "l1Token",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3877,
                                                        "src": "9362:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 4112,
                                                                "name": "_l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4069,
                                                                "src": "9379:8:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 4111,
                                                            "name": "IERC20",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 584,
                                                            "src": "9372:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$584_$",
                                                                "typeString": "type(contract IERC20)"
                                                            }
                                                        },
                                                        "id": 4113,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "9372:16:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                                            "typeString": "contract IERC20"
                                                        }
                                                    },
                                                    "src": "9362:26:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "id": 4115,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9362:26:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4122,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4116,
                                                        "name": "lastLpFeeUpdate",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3894,
                                                        "src": "9398:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 4119,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3789,
                                                                    "src": "9423:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 4120,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "9423:16:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 4118,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "9416:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint32_$",
                                                                "typeString": "type(uint32)"
                                                            },
                                                            "typeName": {
                                                                "id": 4117,
                                                                "name": "uint32",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "9416:6:14",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 4121,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "9416:24:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "src": "9398:42:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "id": 4123,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9398:42:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4126,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4124,
                                                        "name": "lpFeeRatePerSecond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3892,
                                                        "src": "9450:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 4125,
                                                        "name": "_lpFeeRatePerSecond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4071,
                                                        "src": "9471:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "9450:40:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 4127,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9450:40:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4130,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4128,
                                                        "name": "isWethPool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3887,
                                                        "src": "9500:10:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 4129,
                                                        "name": "_isWethPool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4073,
                                                        "src": "9513:11:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "9500:24:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 4131,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9500:24:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 4132,
                                                        "name": "syncUmaEcosystemParams",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5247,
                                                        "src": "9535:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 4133,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9535:24:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4134,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9535:24:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 4135,
                                                        "name": "syncWithBridgeAdminParams",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5272,
                                                        "src": "9637:25:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 4136,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9637:27:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4137,
                                                "nodeType": "ExpressionStatement",
                                                "src": "9637:27:14"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 4139,
                                                            "name": "lpFeeRatePerSecond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3892,
                                                            "src": "9777:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 4138,
                                                        "name": "LpFeeRateSet",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4036,
                                                        "src": "9764:12:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 4140,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "9764:32:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4141,
                                                "nodeType": "EmitStatement",
                                                "src": "9759:37:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4061,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8086:798:14",
                                        "text": " @notice Construct the Bridge Pool.\n @param _lpTokenName Name of the LP token to be deployed by this contract.\n @param _lpTokenSymbol Symbol of the LP token to be deployed by this contract.\n @param _bridgeAdmin Admin contract deployed alongside on L1. Stores global variables and has owner control.\n @param _l1Token Address of the L1 token that this bridgePool holds. This is the token LPs deposit and is bridged.\n @param _lpFeeRatePerSecond Interest rate payment that scales the amount of pending fees per second paid to LPs.\n @param _isWethPool Toggles if this is the WETH pool. If it is then can accept ETH and wrap to WETH for the user.\n @param _timer Timer used to synchronize contract time in testing. Set to 0x000... in production."
                                    },
                                    "id": 4143,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 4078,
                                                    "name": "_timer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4075,
                                                    "src": "9132:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 4079,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 4077,
                                                "name": "Testable",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3790,
                                                "src": "9123:8:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "9123:16:14"
                                        },
                                        {
                                            "arguments": [
                                                {
                                                    "id": 4081,
                                                    "name": "_lpTokenName",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4063,
                                                    "src": "9146:12:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                    }
                                                },
                                                {
                                                    "id": 4082,
                                                    "name": "_lpTokenSymbol",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4065,
                                                    "src": "9160:14:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                    }
                                                }
                                            ],
                                            "id": 4083,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 4080,
                                                "name": "ERC20",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 506,
                                                "src": "9140:5:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "9140:35:14"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4076,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4063,
                                                "mutability": "mutable",
                                                "name": "_lpTokenName",
                                                "nameLocation": "8924:12:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "8910:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 4062,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8910:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4065,
                                                "mutability": "mutable",
                                                "name": "_lpTokenSymbol",
                                                "nameLocation": "8960:14:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "8946:28:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 4064,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8946:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4067,
                                                "mutability": "mutable",
                                                "name": "_bridgeAdmin",
                                                "nameLocation": "8992:12:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "8984:20:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 4066,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8984:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4069,
                                                "mutability": "mutable",
                                                "name": "_l1Token",
                                                "nameLocation": "9022:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "9014:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 4068,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9014:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4071,
                                                "mutability": "mutable",
                                                "name": "_lpFeeRatePerSecond",
                                                "nameLocation": "9047:19:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "9040:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 4070,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9040:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4073,
                                                "mutability": "mutable",
                                                "name": "_isWethPool",
                                                "nameLocation": "9081:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "9076:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4072,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9076:4:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4075,
                                                "mutability": "mutable",
                                                "name": "_timer",
                                                "nameLocation": "9110:6:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4143,
                                                "src": "9102:14:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 4074,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9102:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8900:222:14"
                                    },
                                    "returnParameters": {
                                        "id": 4084,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "9176:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "8889:914:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 4225,
                                        "nodeType": "Block",
                                        "src": "10767:890:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 4163,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "id": 4157,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 4152,
                                                                            "name": "isWethPool",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3887,
                                                                            "src": "10947:10:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "&&",
                                                                        "rightExpression": {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 4156,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "expression": {
                                                                                    "id": 4153,
                                                                                    "name": "msg",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": -15,
                                                                                    "src": "10961:3:14",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_magic_message",
                                                                                        "typeString": "msg"
                                                                                    }
                                                                                },
                                                                                "id": 4154,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "memberName": "value",
                                                                                "nodeType": "MemberAccess",
                                                                                "src": "10961:9:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "==",
                                                                            "rightExpression": {
                                                                                "id": 4155,
                                                                                "name": "l1TokenAmount",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4146,
                                                                                "src": "10974:13:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "10961:26:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                            }
                                                                        },
                                                                        "src": "10947:40:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 4158,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "10946:42:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "||",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 4162,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 4159,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "10992:3:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 4160,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "value",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "10992:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "hexValue": "30",
                                                                    "id": 4161,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "11005:1:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_0_by_1",
                                                                        "typeString": "int_const 0"
                                                                    },
                                                                    "value": "0"
                                                                },
                                                                "src": "10992:14:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "10946:60:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "42616420616464206c6971756964697479204574682076616c7565",
                                                            "id": 4164,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "11008:29:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_1b9adfacf0e3713528db5d163499daffed51d205d476d1216aa03b51e5246b78",
                                                                "typeString": "literal_string \"Bad add liquidity Eth value\""
                                                            },
                                                            "value": "Bad add liquidity Eth value"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_1b9adfacf0e3713528db5d163499daffed51d205d476d1216aa03b51e5246b78",
                                                                "typeString": "literal_string \"Bad add liquidity Eth value\""
                                                            }
                                                        ],
                                                        "id": 4151,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "10938:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4165,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "10938:100:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4166,
                                                "nodeType": "ExpressionStatement",
                                                "src": "10938:100:14"
                                            },
                                            {
                                                "assignments": [
                                                    4168
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4168,
                                                        "mutability": "mutable",
                                                        "name": "lpTokensToMint",
                                                        "nameLocation": "11247:14:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4225,
                                                        "src": "11239:22:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4167,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "11239:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4176,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4175,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 4171,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 4169,
                                                                    "name": "l1TokenAmount",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4146,
                                                                    "src": "11265:13:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "*",
                                                                "rightExpression": {
                                                                    "hexValue": "31653138",
                                                                    "id": 4170,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "11281:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                                        "typeString": "int_const 1000000000000000000"
                                                                    },
                                                                    "value": "1e18"
                                                                },
                                                                "src": "11265:20:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 4172,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "11264:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 4173,
                                                            "name": "_exchangeRateCurrent",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5498,
                                                            "src": "11289:20:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint256_$",
                                                                "typeString": "function () returns (uint256)"
                                                            }
                                                        },
                                                        "id": 4174,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "11289:22:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "11264:47:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "11239:72:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4178,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "11327:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4179,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "11327:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4180,
                                                            "name": "lpTokensToMint",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4168,
                                                            "src": "11339:14:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4177,
                                                        "name": "_mint",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 387,
                                                        "src": "11321:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,uint256)"
                                                        }
                                                    },
                                                    "id": 4181,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11321:33:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4182,
                                                "nodeType": "ExpressionStatement",
                                                "src": "11321:33:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4185,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4183,
                                                        "name": "liquidReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3881,
                                                        "src": "11364:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 4184,
                                                        "name": "l1TokenAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4146,
                                                        "src": "11382:13:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "11364:31:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4186,
                                                "nodeType": "ExpressionStatement",
                                                "src": "11364:31:14"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 4192,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 4190,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4187,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "11410:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4188,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "value",
                                                            "nodeType": "MemberAccess",
                                                            "src": "11410:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 4189,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "11422:1:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "11410:13:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "id": 4191,
                                                        "name": "isWethPool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3887,
                                                        "src": "11427:10:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "11410:27:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 4208,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "11536:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 4209,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "11536:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4212,
                                                                        "name": "this",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -28,
                                                                        "src": "11556:4:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                            "typeString": "contract BridgePool"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                            "typeString": "contract BridgePool"
                                                                        }
                                                                    ],
                                                                    "id": 4211,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "11548:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 4210,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "11548:7:14",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 4213,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "11548:13:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 4214,
                                                                "name": "l1TokenAmount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4146,
                                                                "src": "11563:13:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 4205,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3877,
                                                                "src": "11511:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 4207,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "safeTransferFrom",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 666,
                                                            "src": "11511:24:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                "typeString": "function (contract IERC20,address,address,uint256)"
                                                            }
                                                        },
                                                        "id": 4215,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "11511:66:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 4216,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "11511:66:14"
                                                },
                                                "id": 4217,
                                                "nodeType": "IfStatement",
                                                "src": "11406:171:14",
                                                "trueBody": {
                                                    "expression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "arguments": [
                                                                        {
                                                                            "arguments": [
                                                                                {
                                                                                    "id": 4196,
                                                                                    "name": "l1Token",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 3877,
                                                                                    "src": "11457:7:14",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "argumentTypes": [
                                                                                    {
                                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                        "typeString": "contract IERC20"
                                                                                    }
                                                                                ],
                                                                                "id": 4195,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "lValueRequested": false,
                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                "src": "11449:7:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                                    "typeString": "type(address)"
                                                                                },
                                                                                "typeName": {
                                                                                    "id": 4194,
                                                                                    "name": "address",
                                                                                    "nodeType": "ElementaryTypeName",
                                                                                    "src": "11449:7:14",
                                                                                    "typeDescriptions": {}
                                                                                }
                                                                            },
                                                                            "id": 4197,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "kind": "typeConversion",
                                                                            "lValueRequested": false,
                                                                            "names": [],
                                                                            "nodeType": "FunctionCall",
                                                                            "src": "11449:16:14",
                                                                            "tryCall": false,
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_address",
                                                                                "typeString": "address"
                                                                            }
                                                                        ],
                                                                        "id": 4193,
                                                                        "name": "WETH9Like",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3851,
                                                                        "src": "11439:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_contract$_WETH9Like_$3851_$",
                                                                            "typeString": "type(contract WETH9Like)"
                                                                        }
                                                                    },
                                                                    "id": 4198,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "11439:27:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_WETH9Like_$3851",
                                                                        "typeString": "contract WETH9Like"
                                                                    }
                                                                },
                                                                "id": 4199,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "deposit",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3850,
                                                                "src": "11439:35:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                                                    "typeString": "function () payable external"
                                                                }
                                                            },
                                                            "id": 4202,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "names": [
                                                                "value"
                                                            ],
                                                            "nodeType": "FunctionCallOptions",
                                                            "options": [
                                                                {
                                                                    "expression": {
                                                                        "id": 4200,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "11483:3:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 4201,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "value",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "11483:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "src": "11439:55:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                                                "typeString": "function () payable external"
                                                            }
                                                        },
                                                        "id": 4203,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "11439:57:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 4204,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "11439:57:14"
                                                }
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 4219,
                                                            "name": "l1TokenAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4146,
                                                            "src": "11608:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4220,
                                                            "name": "lpTokensToMint",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4168,
                                                            "src": "11623:14:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4221,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "11639:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4222,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "11639:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 4218,
                                                        "name": "LiquidityAdded",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3968,
                                                        "src": "11593:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                                                            "typeString": "function (uint256,uint256,address)"
                                                        }
                                                    },
                                                    "id": 4223,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "11593:57:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4224,
                                                "nodeType": "EmitStatement",
                                                "src": "11588:62:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4144,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9976:711:14",
                                        "text": " @notice Add liquidity to the bridge pool. Pulls l1Token from the caller's wallet. The caller is sent back a\n commensurate number of LP tokens (minted to their address) at the prevailing exchange rate.\n @dev The caller must approve this contract to transfer `l1TokenAmount` amount of l1Token if depositing ERC20.\n @dev The caller can deposit ETH which is auto wrapped to WETH. This can only be done if: a) this is the Weth pool\n and b) the l1TokenAmount matches to the transaction msg.value.\n @dev Reentrancy guard not added to this function because this indirectly calls sync() which is guarded.\n @param l1TokenAmount Number of l1Token to add as liquidity."
                                    },
                                    "functionSelector": "51c6590a",
                                    "id": 4226,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 4149,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4148,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "10752:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "10752:14:14"
                                        }
                                    ],
                                    "name": "addLiquidity",
                                    "nameLocation": "10701:12:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4147,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4146,
                                                "mutability": "mutable",
                                                "name": "l1TokenAmount",
                                                "nameLocation": "10722:13:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4226,
                                                "src": "10714:21:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4145,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10714:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10713:23:14"
                                    },
                                    "returnParameters": {
                                        "id": 4150,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "10767:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "10692:965:14",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 4300,
                                        "nodeType": "Block",
                                        "src": "12381:731:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 4240,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 4238,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "UnaryOperation",
                                                                "operator": "!",
                                                                "prefix": true,
                                                                "src": "12480:8:14",
                                                                "subExpression": {
                                                                    "id": 4237,
                                                                    "name": "sendEth",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4231,
                                                                    "src": "12481:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "||",
                                                            "rightExpression": {
                                                                "id": 4239,
                                                                "name": "isWethPool",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3887,
                                                                "src": "12492:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "12480:22:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "43616e742073656e6420657468",
                                                            "id": 4241,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "12504:15:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_6d85c5f14fef91ee2d1e97a9ebbeb17234c6f1697165e89e66564bef6d66742d",
                                                                "typeString": "literal_string \"Cant send eth\""
                                                            },
                                                            "value": "Cant send eth"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_6d85c5f14fef91ee2d1e97a9ebbeb17234c6f1697165e89e66564bef6d66742d",
                                                                "typeString": "literal_string \"Cant send eth\""
                                                            }
                                                        ],
                                                        "id": 4236,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "12472:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4242,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12472:48:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4243,
                                                "nodeType": "ExpressionStatement",
                                                "src": "12472:48:14"
                                            },
                                            {
                                                "assignments": [
                                                    4245
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4245,
                                                        "mutability": "mutable",
                                                        "name": "l1TokensToReturn",
                                                        "nameLocation": "12538:16:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4300,
                                                        "src": "12530:24:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4244,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "12530:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4253,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4252,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 4249,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 4246,
                                                                    "name": "lpTokenAmount",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4229,
                                                                    "src": "12558:13:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "*",
                                                                "rightExpression": {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 4247,
                                                                        "name": "_exchangeRateCurrent",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5498,
                                                                        "src": "12574:20:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint256_$",
                                                                            "typeString": "function () returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 4248,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "12574:22:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "12558:38:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 4250,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "12557:40:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "hexValue": "31653138",
                                                        "id": 4251,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "12600:4:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                            "typeString": "int_const 1000000000000000000"
                                                        },
                                                        "value": "1e18"
                                                    },
                                                    "src": "12557:47:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "12530:74:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4260,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 4255,
                                                                "name": "liquidReserves",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3881,
                                                                "src": "12711:14:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "components": [
                                                                    {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 4258,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 4256,
                                                                            "name": "pendingReserves",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3885,
                                                                            "src": "12730:15:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "+",
                                                                        "rightExpression": {
                                                                            "id": 4257,
                                                                            "name": "l1TokensToReturn",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4245,
                                                                            "src": "12748:16:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "src": "12730:34:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "id": 4259,
                                                                "isConstant": false,
                                                                "isInlineArray": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "TupleExpression",
                                                                "src": "12729:36:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "12711:54:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "5574696c697a6174696f6e20746f6f206869676820746f2072656d6f7665",
                                                            "id": 4261,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "12767:32:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_014e645e7f8031a206f3b5a5e54294e512399b30b942040cdefea4c386ac4c2c",
                                                                "typeString": "literal_string \"Utilization too high to remove\""
                                                            },
                                                            "value": "Utilization too high to remove"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_014e645e7f8031a206f3b5a5e54294e512399b30b942040cdefea4c386ac4c2c",
                                                                "typeString": "literal_string \"Utilization too high to remove\""
                                                            }
                                                        ],
                                                        "id": 4254,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "12703:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4262,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12703:97:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4263,
                                                "nodeType": "ExpressionStatement",
                                                "src": "12703:97:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4265,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "12817:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4266,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "12817:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4267,
                                                            "name": "lpTokenAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4229,
                                                            "src": "12829:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4264,
                                                        "name": "_burn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 449,
                                                        "src": "12811:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                            "typeString": "function (address,uint256)"
                                                        }
                                                    },
                                                    "id": 4268,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12811:32:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4269,
                                                "nodeType": "ExpressionStatement",
                                                "src": "12811:32:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4272,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4270,
                                                        "name": "liquidReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3881,
                                                        "src": "12853:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "id": 4271,
                                                        "name": "l1TokensToReturn",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4245,
                                                        "src": "12871:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "12853:34:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4273,
                                                "nodeType": "ExpressionStatement",
                                                "src": "12853:34:14"
                                            },
                                            {
                                                "condition": {
                                                    "id": 4274,
                                                    "name": "sendEth",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4231,
                                                    "src": "12902:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 4287,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "12999:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 4288,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "12999:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 4289,
                                                                "name": "l1TokensToReturn",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4245,
                                                                "src": "13011:16:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 4284,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3877,
                                                                "src": "12978:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 4286,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "safeTransfer",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 640,
                                                            "src": "12978:20:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                "typeString": "function (contract IERC20,address,uint256)"
                                                            }
                                                        },
                                                        "id": 4290,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "12978:50:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 4291,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "12978:50:14"
                                                },
                                                "id": 4292,
                                                "nodeType": "IfStatement",
                                                "src": "12898:130:14",
                                                "trueBody": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 4278,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -15,
                                                                            "src": "12933:3:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 4279,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "12933:10:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "id": 4277,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "12925:8:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                                                        "typeString": "type(address payable)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 4276,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "12925:8:14",
                                                                        "stateMutability": "payable",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 4280,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "12925:19:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            },
                                                            {
                                                                "id": 4281,
                                                                "name": "l1TokensToReturn",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4245,
                                                                "src": "12946:16:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 4275,
                                                            "name": "_unwrapWETHTo",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5945,
                                                            "src": "12911:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                                                "typeString": "function (address payable,uint256)"
                                                            }
                                                        },
                                                        "id": 4282,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "12911:52:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 4283,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "12911:52:14"
                                                }
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 4294,
                                                            "name": "l1TokensToReturn",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4245,
                                                            "src": "13061:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4295,
                                                            "name": "lpTokenAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4229,
                                                            "src": "13079:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4296,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "13094:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4297,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "13094:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 4293,
                                                        "name": "LiquidityRemoved",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3976,
                                                        "src": "13044:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                                                            "typeString": "function (uint256,uint256,address)"
                                                        }
                                                    },
                                                    "id": 4298,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "13044:61:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4299,
                                                "nodeType": "EmitStatement",
                                                "src": "13039:66:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4227,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11663:629:14",
                                        "text": " @notice Removes liquidity from the bridge pool. Burns lpTokenAmount LP tokens from the caller's wallet. The caller\n is sent back a commensurate number of l1Tokens at the prevailing exchange rate.\n @dev The caller does not need to approve the spending of LP tokens as this method directly uses the burn logic.\n @dev Reentrancy guard not added to this function because this indirectly calls sync() which is guarded.\n @param lpTokenAmount Number of lpTokens to redeem for underlying.\n @param sendEth Enable the liquidity provider to remove liquidity in ETH, if this is the WETH pool."
                                    },
                                    "functionSelector": "4f52fd17",
                                    "id": 4301,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 4234,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4233,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "12366:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "12366:14:14"
                                        }
                                    ],
                                    "name": "removeLiquidity",
                                    "nameLocation": "12306:15:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4232,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4229,
                                                "mutability": "mutable",
                                                "name": "lpTokenAmount",
                                                "nameLocation": "12330:13:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4301,
                                                "src": "12322:21:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 4228,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12322:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4231,
                                                "mutability": "mutable",
                                                "name": "sendEth",
                                                "nameLocation": "12350:7:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4301,
                                                "src": "12345:12:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 4230,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12345:4:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12321:37:14"
                                    },
                                    "returnParameters": {
                                        "id": 4235,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "12381:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "12297:815:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 4513,
                                        "nodeType": "Block",
                                        "src": "14351:4204:14",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    4315
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4315,
                                                        "mutability": "mutable",
                                                        "name": "priceRequestTime",
                                                        "nameLocation": "14468:16:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "14461:23:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        },
                                                        "typeName": {
                                                            "id": 4314,
                                                            "name": "uint32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "14461:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4321,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 4318,
                                                                "name": "getCurrentTime",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3789,
                                                                "src": "14494:14:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                    "typeString": "function () view returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4319,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "14494:16:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4317,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "14487:6:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint32_$",
                                                            "typeString": "type(uint32)"
                                                        },
                                                        "typeName": {
                                                            "id": 4316,
                                                            "name": "uint32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "14487:6:14",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 4320,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14487:24:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "14461:50:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 4335,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 4331,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    },
                                                                    "id": 4326,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "expression": {
                                                                            "id": 4323,
                                                                            "name": "depositData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4305,
                                                                            "src": "14767:11:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                                "typeString": "struct BridgePool.DepositData memory"
                                                                            }
                                                                        },
                                                                        "id": 4324,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "slowRelayFeePct",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3931,
                                                                        "src": "14767:27:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<=",
                                                                    "rightExpression": {
                                                                        "hexValue": "302e3235653138",
                                                                        "id": 4325,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "14798:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_250000000000000000_by_1",
                                                                            "typeString": "int_const 250000000000000000"
                                                                        },
                                                                        "value": "0.25e18"
                                                                    },
                                                                    "src": "14767:38:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&&",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    },
                                                                    "id": 4330,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "expression": {
                                                                            "id": 4327,
                                                                            "name": "depositData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4305,
                                                                            "src": "14825:11:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                                "typeString": "struct BridgePool.DepositData memory"
                                                                            }
                                                                        },
                                                                        "id": 4328,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "instantRelayFeePct",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3933,
                                                                        "src": "14825:30:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<=",
                                                                    "rightExpression": {
                                                                        "hexValue": "302e3235653138",
                                                                        "id": 4329,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "14859:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_250000000000000000_by_1",
                                                                            "typeString": "int_const 250000000000000000"
                                                                        },
                                                                        "value": "0.25e18"
                                                                    },
                                                                    "src": "14825:41:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "14767:99:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                },
                                                                "id": 4334,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 4332,
                                                                    "name": "realizedLpFeePct",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4307,
                                                                    "src": "14886:16:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<=",
                                                                "rightExpression": {
                                                                    "hexValue": "302e35653138",
                                                                    "id": 4333,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "14906:6:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_500000000000000000_by_1",
                                                                        "typeString": "int_const 500000000000000000"
                                                                    },
                                                                    "value": "0.5e18"
                                                                },
                                                                "src": "14886:26:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "14767:145:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e76616c69642066656573",
                                                            "id": 4336,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "14926:14:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9",
                                                                "typeString": "literal_string \"Invalid fees\""
                                                            },
                                                            "value": "Invalid fees"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9",
                                                                "typeString": "literal_string \"Invalid fees\""
                                                            }
                                                        ],
                                                        "id": 4322,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "14746:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4337,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "14746:204:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4338,
                                                "nodeType": "ExpressionStatement",
                                                "src": "14746:204:14"
                                            },
                                            {
                                                "assignments": [
                                                    4340
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4340,
                                                        "mutability": "mutable",
                                                        "name": "depositHash",
                                                        "nameLocation": "15032:11:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "15024:19:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4339,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "15024:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4344,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4342,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4305,
                                                            "src": "15062:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        ],
                                                        "id": 4341,
                                                        "name": "_getDepositHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5715,
                                                        "src": "15046:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (struct BridgePool.DepositData memory) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4343,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15046:28:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "15024:50:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            "id": 4353,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "id": 4346,
                                                                    "name": "relays",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3956,
                                                                    "src": "15201:6:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                                                        "typeString": "mapping(bytes32 => bytes32)"
                                                                    }
                                                                },
                                                                "id": 4348,
                                                                "indexExpression": {
                                                                    "id": 4347,
                                                                    "name": "depositHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4340,
                                                                    "src": "15208:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "15201:19:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 4351,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "15232:1:14",
                                                                        "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": 4350,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "15224:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                                                        "typeString": "type(bytes32)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 4349,
                                                                        "name": "bytes32",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "15224:7:14",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 4352,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "15224:10:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "src": "15201:33:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "50656e64696e672072656c617920657869737473",
                                                            "id": 4354,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "15236:22:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78",
                                                                "typeString": "literal_string \"Pending relay exists\""
                                                            },
                                                            "value": "Pending relay exists"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78",
                                                                "typeString": "literal_string \"Pending relay exists\""
                                                            }
                                                        ],
                                                        "id": 4345,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "15193:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4355,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15193:66:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4356,
                                                "nodeType": "ExpressionStatement",
                                                "src": "15193:66:14"
                                            },
                                            {
                                                "assignments": [
                                                    4358
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4358,
                                                        "mutability": "mutable",
                                                        "name": "proposerBond",
                                                        "nameLocation": "15278:12:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "15270:20:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4357,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "15270:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4363,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4360,
                                                                "name": "depositData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4305,
                                                                "src": "15310:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                    "typeString": "struct BridgePool.DepositData memory"
                                                                }
                                                            },
                                                            "id": 4361,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "amount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3929,
                                                            "src": "15310:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4359,
                                                        "name": "_getProposerBond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5695,
                                                        "src": "15293:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) view returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4362,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15293:36:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "15270:59:14"
                                            },
                                            {
                                                "assignments": [
                                                    4366
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4366,
                                                        "mutability": "mutable",
                                                        "name": "relayData",
                                                        "nameLocation": "15751:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "15734:26:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                            "typeString": "struct BridgePool.RelayData"
                                                        },
                                                        "typeName": {
                                                            "id": 4365,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 4364,
                                                                "name": "RelayData",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 3952,
                                                                "src": "15734:9:14"
                                                            },
                                                            "referencedDeclaration": 3952,
                                                            "src": "15734:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                                "typeString": "struct BridgePool.RelayData"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4379,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4368,
                                                                "name": "RelayState",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3919,
                                                                "src": "15815:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_enum$_RelayState_$3919_$",
                                                                    "typeString": "type(enum BridgePool.RelayState)"
                                                                }
                                                            },
                                                            "id": 4369,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberName": "Pending",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3917,
                                                            "src": "15815:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                "typeString": "enum BridgePool.RelayState"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4370,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "15864:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4371,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "15864:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4373,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "src": "15901:16:14",
                                                            "subExpression": {
                                                                "id": 4372,
                                                                "name": "numberOfRelays",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3879,
                                                                "src": "15901:14:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint32",
                                                                    "typeString": "uint32"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4374,
                                                            "name": "realizedLpFeePct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4307,
                                                            "src": "16045:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "id": 4375,
                                                            "name": "priceRequestTime",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4315,
                                                            "src": "16097:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4376,
                                                            "name": "proposerBond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4358,
                                                            "src": "16145:12:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4377,
                                                            "name": "l1TokenFinalFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3900,
                                                            "src": "16185:15:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                "typeString": "enum BridgePool.RelayState"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4367,
                                                        "name": "RelayData",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3952,
                                                        "src": "15775:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_RelayData_$3952_storage_ptr_$",
                                                            "typeString": "type(struct BridgePool.RelayData storage pointer)"
                                                        }
                                                    },
                                                    "id": 4378,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [
                                                        "relayState",
                                                        "slowRelayer",
                                                        "relayId",
                                                        "realizedLpFeePct",
                                                        "priceRequestTime",
                                                        "proposerBond",
                                                        "finalFee"
                                                    ],
                                                    "nodeType": "FunctionCall",
                                                    "src": "15775:440:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                        "typeString": "struct BridgePool.RelayData memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "15734:481:14"
                                            },
                                            {
                                                "assignments": [
                                                    4381
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4381,
                                                        "mutability": "mutable",
                                                        "name": "relayHash",
                                                        "nameLocation": "16233:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "16225:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4380,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "16225:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4386,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4383,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4305,
                                                            "src": "16259:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4384,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4366,
                                                            "src": "16272:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4382,
                                                        "name": "_getRelayHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5540,
                                                        "src": "16245:13:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (struct BridgePool.DepositData memory,struct BridgePool.RelayData memory) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4385,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16245:37:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "16225:57:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4393,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 4387,
                                                            "name": "relays",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3956,
                                                            "src": "16292:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                                                "typeString": "mapping(bytes32 => bytes32)"
                                                            }
                                                        },
                                                        "id": 4389,
                                                        "indexExpression": {
                                                            "id": 4388,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4340,
                                                            "src": "16299:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "16292:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 4391,
                                                                "name": "relayData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4366,
                                                                "src": "16332:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            ],
                                                            "id": 4390,
                                                            "name": "_getRelayDataHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5556,
                                                            "src": "16314:17:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                                "typeString": "function (struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 4392,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "16314:28:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "16292:50:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "id": 4394,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16292:50:14"
                                            },
                                            {
                                                "assignments": [
                                                    4396
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4396,
                                                        "mutability": "mutable",
                                                        "name": "instantRelayHash",
                                                        "nameLocation": "16361:16:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "16353:24:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4395,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "16353:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4401,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4398,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4340,
                                                            "src": "16401:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4399,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4366,
                                                            "src": "16414:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4397,
                                                        "name": "_getInstantRelayHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5596,
                                                        "src": "16380:20:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes32,struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4400,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16380:44:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "16353:71:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            "id": 4410,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "id": 4403,
                                                                    "name": "instantRelays",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3960,
                                                                    "src": "16558:13:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                        "typeString": "mapping(bytes32 => address)"
                                                                    }
                                                                },
                                                                "id": 4405,
                                                                "indexExpression": {
                                                                    "id": 4404,
                                                                    "name": "instantRelayHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4396,
                                                                    "src": "16572:16:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "16558:31:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 4408,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "16601:1:14",
                                                                        "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": 4407,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "16593:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 4406,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "16593:7:14",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 4409,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "16593:10:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            "src": "16558:45:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "52656c61792063616e6e6f742062652073706564207570",
                                                            "id": 4411,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "16617:25:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6",
                                                                "typeString": "literal_string \"Relay cannot be sped up\""
                                                            },
                                                            "value": "Relay cannot be sped up"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6",
                                                                "typeString": "literal_string \"Relay cannot be sped up\""
                                                            }
                                                        ],
                                                        "id": 4402,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "16434:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4412,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16434:218:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4413,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16434:218:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4420,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 4417,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 4415,
                                                                    "name": "liquidReserves",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3881,
                                                                    "src": "16960:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "-",
                                                                "rightExpression": {
                                                                    "id": 4416,
                                                                    "name": "pendingReserves",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3885,
                                                                    "src": "16977:15:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "16960:32:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 4418,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4305,
                                                                    "src": "16996:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                "id": 4419,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "amount",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3929,
                                                                "src": "16996:18:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "16960:54:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e73756666696369656e7420706f6f6c2062616c616e6365",
                                                            "id": 4421,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "17016:27:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d",
                                                                "typeString": "literal_string \"Insufficient pool balance\""
                                                            },
                                                            "value": "Insufficient pool balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d",
                                                                "typeString": "literal_string \"Insufficient pool balance\""
                                                            }
                                                        ],
                                                        "id": 4414,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "16952:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4422,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "16952:92:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4423,
                                                "nodeType": "ExpressionStatement",
                                                "src": "16952:92:14"
                                            },
                                            {
                                                "assignments": [
                                                    4425
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4425,
                                                        "mutability": "mutable",
                                                        "name": "totalBond",
                                                        "nameLocation": "17175:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "17167:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4424,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "17167:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4429,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4428,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 4426,
                                                        "name": "proposerBond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4358,
                                                        "src": "17187:12:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 4427,
                                                        "name": "l1TokenFinalFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3900,
                                                        "src": "17202:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "17187:30:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "17167:50:14"
                                            },
                                            {
                                                "assignments": [
                                                    4431
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4431,
                                                        "mutability": "mutable",
                                                        "name": "feesTotal",
                                                        "nameLocation": "17427:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "17419:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4430,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "17419:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4444,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            "id": 4440,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                },
                                                                "id": 4437,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 4433,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4366,
                                                                        "src": "17486:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 4434,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "realizedLpFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3945,
                                                                    "src": "17486:26:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "id": 4435,
                                                                        "name": "depositData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4305,
                                                                        "src": "17515:11:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                            "typeString": "struct BridgePool.DepositData memory"
                                                                        }
                                                                    },
                                                                    "id": 4436,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "slowRelayFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3931,
                                                                    "src": "17515:27:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "src": "17486:56:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 4438,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4305,
                                                                    "src": "17545:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                "id": 4439,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "instantRelayFeePct",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3933,
                                                                "src": "17545:30:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            "src": "17486:89:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4441,
                                                                "name": "depositData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4305,
                                                                "src": "17593:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                    "typeString": "struct BridgePool.DepositData memory"
                                                                }
                                                            },
                                                            "id": 4442,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "amount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3929,
                                                            "src": "17593:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4432,
                                                        "name": "_getAmountFromPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5682,
                                                        "src": "17451:17:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint64,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4443,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "17451:174:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "17419:206:14"
                                            },
                                            {
                                                "assignments": [
                                                    4446
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4446,
                                                        "mutability": "mutable",
                                                        "name": "recipientAmount",
                                                        "nameLocation": "17759:15:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4513,
                                                        "src": "17751:23:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4445,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "17751:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4451,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4450,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4447,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4305,
                                                            "src": "17777:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        "id": 4448,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "amount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3929,
                                                        "src": "17777:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 4449,
                                                        "name": "feesTotal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4431,
                                                        "src": "17798:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "17777:30:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "17751:56:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4454,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4452,
                                                        "name": "bonds",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3904,
                                                        "src": "17818:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 4453,
                                                        "name": "totalBond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4425,
                                                        "src": "17827:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "17818:18:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4455,
                                                "nodeType": "ExpressionStatement",
                                                "src": "17818:18:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4459,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4456,
                                                        "name": "pendingReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3885,
                                                        "src": "17846:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 4457,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4305,
                                                            "src": "17865:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        "id": 4458,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "amount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3929,
                                                        "src": "17865:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "17846:37:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4460,
                                                "nodeType": "ExpressionStatement",
                                                "src": "17846:37:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4466,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 4461,
                                                            "name": "instantRelays",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3960,
                                                            "src": "17968:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                "typeString": "mapping(bytes32 => address)"
                                                            }
                                                        },
                                                        "id": 4463,
                                                        "indexExpression": {
                                                            "id": 4462,
                                                            "name": "instantRelayHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4396,
                                                            "src": "17982:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "17968:31:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 4464,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -15,
                                                            "src": "18002:3:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 4465,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "18002:10:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "17968:44:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 4467,
                                                "nodeType": "ExpressionStatement",
                                                "src": "17968:44:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4471,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "18048:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4472,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "18048:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4475,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -28,
                                                                    "src": "18068:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                        "typeString": "contract BridgePool"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                        "typeString": "contract BridgePool"
                                                                    }
                                                                ],
                                                                "id": 4474,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "18060:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 4473,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "18060:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 4476,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "18060:13:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4479,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 4477,
                                                                "name": "recipientAmount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4446,
                                                                "src": "18075:15:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "id": 4478,
                                                                "name": "totalBond",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4425,
                                                                "src": "18093:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "18075:27:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 4468,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3877,
                                                            "src": "18023:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 4470,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "safeTransferFrom",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 666,
                                                        "src": "18023:24:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                            "typeString": "function (contract IERC20,address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 4480,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "18023:80:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4481,
                                                "nodeType": "ExpressionStatement",
                                                "src": "18023:80:14"
                                            },
                                            {
                                                "condition": {
                                                    "id": 4482,
                                                    "name": "isWethPool",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3887,
                                                    "src": "18178:10:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 4493,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4305,
                                                                    "src": "18367:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                "id": 4494,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "l1Recipient",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3925,
                                                                "src": "18367:23:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            },
                                                            {
                                                                "id": 4495,
                                                                "name": "recipientAmount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4446,
                                                                "src": "18392:15:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 4490,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3877,
                                                                "src": "18346:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 4492,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "safeTransfer",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 640,
                                                            "src": "18346:20:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                "typeString": "function (contract IERC20,address,uint256)"
                                                            }
                                                        },
                                                        "id": 4496,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "18346:62:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 4497,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "18346:62:14"
                                                },
                                                "id": 4498,
                                                "nodeType": "IfStatement",
                                                "src": "18174:234:14",
                                                "trueBody": {
                                                    "id": 4489,
                                                    "nodeType": "Block",
                                                    "src": "18190:150:14",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 4484,
                                                                            "name": "depositData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4305,
                                                                            "src": "18218:11:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                                "typeString": "struct BridgePool.DepositData memory"
                                                                            }
                                                                        },
                                                                        "id": 4485,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "l1Recipient",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3925,
                                                                        "src": "18218:23:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 4486,
                                                                        "name": "recipientAmount",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4446,
                                                                        "src": "18243:15:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 4483,
                                                                    "name": "_unwrapWETHTo",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5945,
                                                                    "src": "18204:13:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (address payable,uint256)"
                                                                    }
                                                                },
                                                                "id": 4487,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "18204:55:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 4488,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "18204:55:14"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 4500,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4340,
                                                            "src": "18439:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4501,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4305,
                                                            "src": "18452:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4502,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4366,
                                                            "src": "18465:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4503,
                                                            "name": "relayHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4381,
                                                            "src": "18476:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 4499,
                                                        "name": "DepositRelayed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3988,
                                                        "src": "18424:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_DepositData_$3936_memory_ptr_$_t_struct$_RelayData_$3952_memory_ptr_$_t_bytes32_$returns$__$",
                                                            "typeString": "function (bytes32,struct BridgePool.DepositData memory,struct BridgePool.RelayData memory,bytes32)"
                                                        }
                                                    },
                                                    "id": 4504,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "18424:62:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4505,
                                                "nodeType": "EmitStatement",
                                                "src": "18419:67:14"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 4507,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4340,
                                                            "src": "18513:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4508,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "18526:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4509,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "18526:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4510,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4366,
                                                            "src": "18538:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4506,
                                                        "name": "RelaySpedUp",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3997,
                                                        "src": "18501:11:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_struct$_RelayData_$3952_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes32,address,struct BridgePool.RelayData memory)"
                                                        }
                                                    },
                                                    "id": 4511,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "18501:47:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4512,
                                                "nodeType": "EmitStatement",
                                                "src": "18496:52:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4302,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "13252:941:14",
                                        "text": " @notice Called by Relayer to execute a slow + fast relay from L2 to L1, fulfilling a corresponding deposit order.\n @dev There can only be one pending relay for a deposit. This method is effectively the relayDeposit and\n speedUpRelay methods concatenated. This could be refactored to just call each method, but there\n are some gas savings in combining the transfers and hash computations.\n @dev Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.\n @dev This function can only be called if relays are enabled for this bridge pool.\n @param depositData the deposit data struct containing all the user's deposit information.\n @param realizedLpFeePct LP fee calculated off-chain considering the L1 pool liquidity at deposit time, before\n      quoteTimestamp. The OO acts to verify the correctness of this realized fee. Cannot exceed 50%."
                                    },
                                    "functionSelector": "753b91bb",
                                    "id": 4514,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 4310,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4309,
                                                "name": "onlyIfRelaysEnabld",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 4060,
                                                "src": "14303:18:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "14303:20:14"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 4312,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4311,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "14332:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "14332:14:14"
                                        }
                                    ],
                                    "name": "relayAndSpeedUp",
                                    "nameLocation": "14207:15:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4308,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4305,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "14242:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4514,
                                                "src": "14223:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 4304,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4303,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "14223:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "14223:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4307,
                                                "mutability": "mutable",
                                                "name": "realizedLpFeePct",
                                                "nameLocation": "14262:16:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4514,
                                                "src": "14255:23:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 4306,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "14255:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "14222:57:14"
                                    },
                                    "returnParameters": {
                                        "id": 4313,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "14351:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "14198:4357:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 4618,
                                        "nodeType": "Block",
                                        "src": "19281:1247:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4533,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint32",
                                                                    "typeString": "uint32"
                                                                },
                                                                "id": 4530,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 4527,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4521,
                                                                        "src": "19299:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 4528,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "priceRequestTime",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3947,
                                                                    "src": "19299:26:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint32",
                                                                        "typeString": "uint32"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "id": 4529,
                                                                    "name": "optimisticOracleLiveness",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3898,
                                                                    "src": "19328:24:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint32",
                                                                        "typeString": "uint32"
                                                                    }
                                                                },
                                                                "src": "19299:53:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint32",
                                                                    "typeString": "uint32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">",
                                                            "rightExpression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 4531,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3789,
                                                                    "src": "19355:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 4532,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "19355:16:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "19299:72:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "50617374206c6976656e657373",
                                                            "id": 4534,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "19373:15:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_21c11d76539f521406afa6465d19dbc68951b755ccb3b86b975cbdb7c85590e0",
                                                                "typeString": "literal_string \"Past liveness\""
                                                            },
                                                            "value": "Past liveness"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_21c11d76539f521406afa6465d19dbc68951b755ccb3b86b975cbdb7c85590e0",
                                                                "typeString": "literal_string \"Past liveness\""
                                                            }
                                                        ],
                                                        "id": 4526,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "19291:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4535,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "19291:98:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4536,
                                                "nodeType": "ExpressionStatement",
                                                "src": "19291:98:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                "typeString": "enum BridgePool.RelayState"
                                                            },
                                                            "id": 4542,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 4538,
                                                                    "name": "relayData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4521,
                                                                    "src": "19407:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                        "typeString": "struct BridgePool.RelayData memory"
                                                                    }
                                                                },
                                                                "id": 4539,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "relayState",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3939,
                                                                "src": "19407:20:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                    "typeString": "enum BridgePool.RelayState"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 4540,
                                                                    "name": "RelayState",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3919,
                                                                    "src": "19431:10:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_enum$_RelayState_$3919_$",
                                                                        "typeString": "type(enum BridgePool.RelayState)"
                                                                    }
                                                                },
                                                                "id": 4541,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "Pending",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3917,
                                                                "src": "19431:18:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                    "typeString": "enum BridgePool.RelayState"
                                                                }
                                                            },
                                                            "src": "19407:42:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4e6f742064697370757461626c65",
                                                            "id": 4543,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "19451:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_6e21cb62d00f42c575e706905a321dbe03b2d3e18c1a8cd6dde1b236d44f9cb5",
                                                                "typeString": "literal_string \"Not disputable\""
                                                            },
                                                            "value": "Not disputable"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_6e21cb62d00f42c575e706905a321dbe03b2d3e18c1a8cd6dde1b236d44f9cb5",
                                                                "typeString": "literal_string \"Not disputable\""
                                                            }
                                                        ],
                                                        "id": 4537,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "19399:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4544,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "19399:69:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4545,
                                                "nodeType": "ExpressionStatement",
                                                "src": "19399:69:14"
                                            },
                                            {
                                                "assignments": [
                                                    4547
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4547,
                                                        "mutability": "mutable",
                                                        "name": "depositHash",
                                                        "nameLocation": "19522:11:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4618,
                                                        "src": "19514:19:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4546,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "19514:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4551,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4549,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4518,
                                                            "src": "19552:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        ],
                                                        "id": 4548,
                                                        "name": "_getDepositHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5715,
                                                        "src": "19536:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (struct BridgePool.DepositData memory) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4550,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "19536:28:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "19514:50:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4553,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4547,
                                                            "src": "19597:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4554,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4521,
                                                            "src": "19610:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4552,
                                                        "name": "_validateRelayDataHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5576,
                                                        "src": "19574:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_RelayData_$3952_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes32,struct BridgePool.RelayData memory) view"
                                                        }
                                                    },
                                                    "id": 4555,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "19574:46:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4556,
                                                "nodeType": "ExpressionStatement",
                                                "src": "19574:46:14"
                                            },
                                            {
                                                "assignments": [
                                                    4558
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4558,
                                                        "mutability": "mutable",
                                                        "name": "relayHash",
                                                        "nameLocation": "19693:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4618,
                                                        "src": "19685:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4557,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "19685:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4563,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4560,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4518,
                                                            "src": "19719:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4561,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4521,
                                                            "src": "19732:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4559,
                                                        "name": "_getRelayHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5540,
                                                        "src": "19705:13:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (struct BridgePool.DepositData memory,struct BridgePool.RelayData memory) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4562,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "19705:37:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "19685:57:14"
                                            },
                                            {
                                                "assignments": [
                                                    4565
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4565,
                                                        "mutability": "mutable",
                                                        "name": "success",
                                                        "nameLocation": "19869:7:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4618,
                                                        "src": "19864:12:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        },
                                                        "typeName": {
                                                            "id": 4564,
                                                            "name": "bool",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "19864:4:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4579,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4567,
                                                                "name": "relayData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4521,
                                                                "src": "19931:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            },
                                                            "id": 4568,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "slowRelayer",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3941,
                                                            "src": "19931:21:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4569,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "19970:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4570,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "19970:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4571,
                                                                "name": "relayData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4521,
                                                                "src": "19998:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            },
                                                            "id": 4572,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "proposerBond",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3949,
                                                            "src": "19998:22:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4573,
                                                                "name": "relayData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4521,
                                                                "src": "20038:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            },
                                                            "id": 4574,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "finalFee",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3951,
                                                            "src": "20038:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4576,
                                                                    "name": "relayHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4558,
                                                                    "src": "20097:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                ],
                                                                "id": 4575,
                                                                "name": "_getRelayAncillaryData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5513,
                                                                "src": "20074:22:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function (bytes32) pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 4577,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "20074:33:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 4566,
                                                        "name": "_requestProposeDispute",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5905,
                                                        "src": "19891:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                                            "typeString": "function (address,address,uint256,uint256,bytes memory) returns (bool)"
                                                        }
                                                    },
                                                    "id": 4578,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "19891:230:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "19864:257:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4586,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4580,
                                                        "name": "bonds",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3904,
                                                        "src": "20202:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 4585,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "expression": {
                                                                "id": 4581,
                                                                "name": "relayData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4521,
                                                                "src": "20211:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            },
                                                            "id": 4582,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "finalFee",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3951,
                                                            "src": "20211:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                            "expression": {
                                                                "id": 4583,
                                                                "name": "relayData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4521,
                                                                "src": "20232:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            },
                                                            "id": 4584,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "proposerBond",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3949,
                                                            "src": "20232:22:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "20211:43:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "20202:52:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4587,
                                                "nodeType": "ExpressionStatement",
                                                "src": "20202:52:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4591,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4588,
                                                        "name": "pendingReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3885,
                                                        "src": "20264:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 4589,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4518,
                                                            "src": "20283:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        "id": 4590,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "amount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3929,
                                                        "src": "20283:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "20264:37:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4592,
                                                "nodeType": "ExpressionStatement",
                                                "src": "20264:37:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4596,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "delete",
                                                    "prefix": true,
                                                    "src": "20311:26:14",
                                                    "subExpression": {
                                                        "baseExpression": {
                                                            "id": 4593,
                                                            "name": "relays",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3956,
                                                            "src": "20318:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                                                "typeString": "mapping(bytes32 => bytes32)"
                                                            }
                                                        },
                                                        "id": 4595,
                                                        "indexExpression": {
                                                            "id": 4594,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4547,
                                                            "src": "20325:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "20318:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4597,
                                                "nodeType": "ExpressionStatement",
                                                "src": "20311:26:14"
                                            },
                                            {
                                                "condition": {
                                                    "id": 4598,
                                                    "name": "success",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4565,
                                                    "src": "20351:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "eventCall": {
                                                        "arguments": [
                                                            {
                                                                "id": 4609,
                                                                "name": "depositHash",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4547,
                                                                "src": "20467:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4611,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4521,
                                                                        "src": "20498:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    ],
                                                                    "id": 4610,
                                                                    "name": "_getRelayDataHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5556,
                                                                    "src": "20480:17:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                                        "typeString": "function (struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                                    }
                                                                },
                                                                "id": 4612,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "20480:28:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 4613,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "20510:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 4614,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "20510:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 4608,
                                                            "name": "RelayCanceled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4013,
                                                            "src": "20453:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                                                                "typeString": "function (bytes32,bytes32,address)"
                                                            }
                                                        },
                                                        "id": 4615,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "20453:68:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 4616,
                                                    "nodeType": "EmitStatement",
                                                    "src": "20448:73:14"
                                                },
                                                "id": 4617,
                                                "nodeType": "IfStatement",
                                                "src": "20347:174:14",
                                                "trueBody": {
                                                    "eventCall": {
                                                        "arguments": [
                                                            {
                                                                "id": 4600,
                                                                "name": "depositHash",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4547,
                                                                "src": "20379:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "id": 4602,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4521,
                                                                        "src": "20410:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    ],
                                                                    "id": 4601,
                                                                    "name": "_getRelayDataHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5556,
                                                                    "src": "20392:17:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                                        "typeString": "function (struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                                    }
                                                                },
                                                                "id": 4603,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "20392:28:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 4604,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "20422:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 4605,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "20422:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 4599,
                                                            "name": "RelayDisputed",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4005,
                                                            "src": "20365:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_address_$returns$__$",
                                                                "typeString": "function (bytes32,bytes32,address)"
                                                            }
                                                        },
                                                        "id": 4606,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "20365:68:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 4607,
                                                    "nodeType": "EmitStatement",
                                                    "src": "20360:73:14"
                                                }
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4515,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "18561:611:14",
                                        "text": " @notice Called by Disputer to dispute an ongoing relay.\n @dev The result of this method is to always throw out the relay, providing an opportunity for another relay for\n the same deposit. Between the disputer and proposer, whoever is incorrect loses their bond. Whoever is correct\n gets it back + a payout.\n @dev Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.\n @param depositData the deposit data struct containing all the user's deposit information.\n @param relayData RelayData logged in the disputed relay."
                                    },
                                    "functionSelector": "cefed55f",
                                    "id": 4619,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 4524,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4523,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "19266:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "19266:14:14"
                                        }
                                    ],
                                    "name": "disputeRelay",
                                    "nameLocation": "19186:12:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4522,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4518,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "19218:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4619,
                                                "src": "19199:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 4517,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4516,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "19199:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "19199:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4521,
                                                "mutability": "mutable",
                                                "name": "relayData",
                                                "nameLocation": "19248:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4619,
                                                "src": "19231:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 4520,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4519,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "19231:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "19231:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "19198:60:14"
                                    },
                                    "returnParameters": {
                                        "id": 4525,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "19281:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "19177:1351:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 4757,
                                        "nodeType": "Block",
                                        "src": "21394:2863:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 4645,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 4641,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    },
                                                                    "id": 4636,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "expression": {
                                                                            "id": 4633,
                                                                            "name": "depositData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4623,
                                                                            "src": "21649:11:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                                "typeString": "struct BridgePool.DepositData memory"
                                                                            }
                                                                        },
                                                                        "id": 4634,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "slowRelayFeePct",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3931,
                                                                        "src": "21649:27:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<=",
                                                                    "rightExpression": {
                                                                        "hexValue": "302e3235653138",
                                                                        "id": 4635,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "21680:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_250000000000000000_by_1",
                                                                            "typeString": "int_const 250000000000000000"
                                                                        },
                                                                        "value": "0.25e18"
                                                                    },
                                                                    "src": "21649:38:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&&",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    },
                                                                    "id": 4640,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "expression": {
                                                                            "id": 4637,
                                                                            "name": "depositData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4623,
                                                                            "src": "21707:11:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                                "typeString": "struct BridgePool.DepositData memory"
                                                                            }
                                                                        },
                                                                        "id": 4638,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "instantRelayFeePct",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3933,
                                                                        "src": "21707:30:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<=",
                                                                    "rightExpression": {
                                                                        "hexValue": "302e3235653138",
                                                                        "id": 4639,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "21741:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_250000000000000000_by_1",
                                                                            "typeString": "int_const 250000000000000000"
                                                                        },
                                                                        "value": "0.25e18"
                                                                    },
                                                                    "src": "21707:41:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "21649:99:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                },
                                                                "id": 4644,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 4642,
                                                                    "name": "realizedLpFeePct",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4625,
                                                                    "src": "21768:16:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "<=",
                                                                "rightExpression": {
                                                                    "hexValue": "302e35653138",
                                                                    "id": 4643,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "21788:6:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_500000000000000000_by_1",
                                                                        "typeString": "int_const 500000000000000000"
                                                                    },
                                                                    "value": "0.5e18"
                                                                },
                                                                "src": "21768:26:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "21649:145:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e76616c69642066656573",
                                                            "id": 4646,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "21808:14:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9",
                                                                "typeString": "literal_string \"Invalid fees\""
                                                            },
                                                            "value": "Invalid fees"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_8f0b953e5c1fae76b95856a0b9773e3b3da1088e59657f07acbc6127a40f93a9",
                                                                "typeString": "literal_string \"Invalid fees\""
                                                            }
                                                        ],
                                                        "id": 4632,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "21628:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4647,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21628:204:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4648,
                                                "nodeType": "ExpressionStatement",
                                                "src": "21628:204:14"
                                            },
                                            {
                                                "assignments": [
                                                    4650
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4650,
                                                        "mutability": "mutable",
                                                        "name": "depositHash",
                                                        "nameLocation": "21914:11:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4757,
                                                        "src": "21906:19:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4649,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "21906:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4654,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4652,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4623,
                                                            "src": "21944:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        ],
                                                        "id": 4651,
                                                        "name": "_getDepositHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5715,
                                                        "src": "21928:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (struct BridgePool.DepositData memory) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4653,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "21928:28:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "21906:50:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            "id": 4663,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "id": 4656,
                                                                    "name": "relays",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3956,
                                                                    "src": "22083:6:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                                                        "typeString": "mapping(bytes32 => bytes32)"
                                                                    }
                                                                },
                                                                "id": 4658,
                                                                "indexExpression": {
                                                                    "id": 4657,
                                                                    "name": "depositHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4650,
                                                                    "src": "22090:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "22083:19:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "hexValue": "30",
                                                                        "id": 4661,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "22114:1:14",
                                                                        "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": 4660,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "22106:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                                                        "typeString": "type(bytes32)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 4659,
                                                                        "name": "bytes32",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "22106:7:14",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 4662,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "22106:10:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "src": "22083:33:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "50656e64696e672072656c617920657869737473",
                                                            "id": 4664,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "22118:22:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78",
                                                                "typeString": "literal_string \"Pending relay exists\""
                                                            },
                                                            "value": "Pending relay exists"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_b74437cdd235438cac9b2e37e93ed0fe03b64a8f1df8954310f51adcb3531c78",
                                                                "typeString": "literal_string \"Pending relay exists\""
                                                            }
                                                        ],
                                                        "id": 4655,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "22075:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4665,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22075:66:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4666,
                                                "nodeType": "ExpressionStatement",
                                                "src": "22075:66:14"
                                            },
                                            {
                                                "assignments": [
                                                    4668
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4668,
                                                        "mutability": "mutable",
                                                        "name": "priceRequestTime",
                                                        "nameLocation": "22259:16:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4757,
                                                        "src": "22252:23:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        },
                                                        "typeName": {
                                                            "id": 4667,
                                                            "name": "uint32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "22252:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4674,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "id": 4671,
                                                                "name": "getCurrentTime",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3789,
                                                                "src": "22285:14:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                    "typeString": "function () view returns (uint256)"
                                                                }
                                                            },
                                                            "id": 4672,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "22285:16:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4670,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "22278:6:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_uint32_$",
                                                            "typeString": "type(uint32)"
                                                        },
                                                        "typeName": {
                                                            "id": 4669,
                                                            "name": "uint32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "22278:6:14",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 4673,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22278:24:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "22252:50:14"
                                            },
                                            {
                                                "assignments": [
                                                    4676
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4676,
                                                        "mutability": "mutable",
                                                        "name": "proposerBond",
                                                        "nameLocation": "22321:12:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4757,
                                                        "src": "22313:20:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4675,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "22313:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4681,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4678,
                                                                "name": "depositData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4623,
                                                                "src": "22353:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                    "typeString": "struct BridgePool.DepositData memory"
                                                                }
                                                            },
                                                            "id": 4679,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "amount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3929,
                                                            "src": "22353:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4677,
                                                        "name": "_getProposerBond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5695,
                                                        "src": "22336:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) view returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4680,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22336:36:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "22313:59:14"
                                            },
                                            {
                                                "assignments": [
                                                    4684
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4684,
                                                        "mutability": "mutable",
                                                        "name": "relayData",
                                                        "nameLocation": "22794:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4757,
                                                        "src": "22777:26:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                            "typeString": "struct BridgePool.RelayData"
                                                        },
                                                        "typeName": {
                                                            "id": 4683,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 4682,
                                                                "name": "RelayData",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 3952,
                                                                "src": "22777:9:14"
                                                            },
                                                            "referencedDeclaration": 3952,
                                                            "src": "22777:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                                "typeString": "struct BridgePool.RelayData"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4697,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4686,
                                                                "name": "RelayState",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3919,
                                                                "src": "22858:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_enum$_RelayState_$3919_$",
                                                                    "typeString": "type(enum BridgePool.RelayState)"
                                                                }
                                                            },
                                                            "id": 4687,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "memberName": "Pending",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3917,
                                                            "src": "22858:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                "typeString": "enum BridgePool.RelayState"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4688,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "22907:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4689,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "22907:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4691,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "nodeType": "UnaryOperation",
                                                            "operator": "++",
                                                            "prefix": false,
                                                            "src": "22944:16:14",
                                                            "subExpression": {
                                                                "id": 4690,
                                                                "name": "numberOfRelays",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3879,
                                                                "src": "22944:14:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint32",
                                                                    "typeString": "uint32"
                                                                }
                                                            },
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4692,
                                                            "name": "realizedLpFeePct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4625,
                                                            "src": "23088:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "id": 4693,
                                                            "name": "priceRequestTime",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4668,
                                                            "src": "23140:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4694,
                                                            "name": "proposerBond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4676,
                                                            "src": "23188:12:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 4695,
                                                            "name": "l1TokenFinalFee",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3900,
                                                            "src": "23228:15:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                "typeString": "enum BridgePool.RelayState"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4685,
                                                        "name": "RelayData",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3952,
                                                        "src": "22818:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_RelayData_$3952_storage_ptr_$",
                                                            "typeString": "type(struct BridgePool.RelayData storage pointer)"
                                                        }
                                                    },
                                                    "id": 4696,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [
                                                        "relayState",
                                                        "slowRelayer",
                                                        "relayId",
                                                        "realizedLpFeePct",
                                                        "priceRequestTime",
                                                        "proposerBond",
                                                        "finalFee"
                                                    ],
                                                    "nodeType": "FunctionCall",
                                                    "src": "22818:440:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                        "typeString": "struct BridgePool.RelayData memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "22777:481:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4704,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 4698,
                                                            "name": "relays",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3956,
                                                            "src": "23268:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                                                "typeString": "mapping(bytes32 => bytes32)"
                                                            }
                                                        },
                                                        "id": 4700,
                                                        "indexExpression": {
                                                            "id": 4699,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4650,
                                                            "src": "23275:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "23268:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 4702,
                                                                "name": "relayData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4684,
                                                                "src": "23308:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            ],
                                                            "id": 4701,
                                                            "name": "_getRelayDataHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5556,
                                                            "src": "23290:17:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                                "typeString": "function (struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 4703,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "23290:28:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "23268:50:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "id": 4705,
                                                "nodeType": "ExpressionStatement",
                                                "src": "23268:50:14"
                                            },
                                            {
                                                "assignments": [
                                                    4707
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4707,
                                                        "mutability": "mutable",
                                                        "name": "relayHash",
                                                        "nameLocation": "23337:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4757,
                                                        "src": "23329:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4706,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "23329:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4712,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4709,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4623,
                                                            "src": "23363:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4710,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4684,
                                                            "src": "23376:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4708,
                                                        "name": "_getRelayHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5540,
                                                        "src": "23349:13:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (struct BridgePool.DepositData memory,struct BridgePool.RelayData memory) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4711,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23349:37:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "23329:57:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4719,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 4716,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 4714,
                                                                    "name": "liquidReserves",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3881,
                                                                    "src": "23694:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "-",
                                                                "rightExpression": {
                                                                    "id": 4715,
                                                                    "name": "pendingReserves",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3885,
                                                                    "src": "23711:15:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "23694:32:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": ">=",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 4717,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4623,
                                                                    "src": "23730:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                "id": 4718,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "amount",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3929,
                                                                "src": "23730:18:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "23694:54:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "496e73756666696369656e7420706f6f6c2062616c616e6365",
                                                            "id": 4720,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "23750:27:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d",
                                                                "typeString": "literal_string \"Insufficient pool balance\""
                                                            },
                                                            "value": "Insufficient pool balance"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_3f15e51fb138d6720f88f6a2b806f6ff3665198e58ccf2c9167b791866275d6d",
                                                                "typeString": "literal_string \"Insufficient pool balance\""
                                                            }
                                                        ],
                                                        "id": 4713,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "23686:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4721,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "23686:92:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4722,
                                                "nodeType": "ExpressionStatement",
                                                "src": "23686:92:14"
                                            },
                                            {
                                                "assignments": [
                                                    4724
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4724,
                                                        "mutability": "mutable",
                                                        "name": "totalBond",
                                                        "nameLocation": "23909:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4757,
                                                        "src": "23901:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4723,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "23901:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4728,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4727,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 4725,
                                                        "name": "proposerBond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4676,
                                                        "src": "23921:12:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 4726,
                                                        "name": "l1TokenFinalFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3900,
                                                        "src": "23936:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "23921:30:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "23901:50:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4732,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4729,
                                                        "name": "pendingReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3885,
                                                        "src": "23961:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 4730,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4623,
                                                            "src": "23980:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        "id": 4731,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "amount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3929,
                                                        "src": "23980:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "23961:37:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4733,
                                                "nodeType": "ExpressionStatement",
                                                "src": "23961:37:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4736,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 4734,
                                                        "name": "bonds",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3904,
                                                        "src": "24082:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 4735,
                                                        "name": "totalBond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4724,
                                                        "src": "24091:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "24082:18:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 4737,
                                                "nodeType": "ExpressionStatement",
                                                "src": "24082:18:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 4741,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "24136:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4742,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "24136:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 4745,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -28,
                                                                    "src": "24156:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                        "typeString": "contract BridgePool"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                        "typeString": "contract BridgePool"
                                                                    }
                                                                ],
                                                                "id": 4744,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "24148:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 4743,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "24148:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 4746,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "24148:13:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4747,
                                                            "name": "totalBond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4724,
                                                            "src": "24163:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 4738,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3877,
                                                            "src": "24111:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 4740,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "safeTransferFrom",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 666,
                                                        "src": "24111:24:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                            "typeString": "function (contract IERC20,address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 4748,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "24111:62:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4749,
                                                "nodeType": "ExpressionStatement",
                                                "src": "24111:62:14"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 4751,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4650,
                                                            "src": "24203:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4752,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4623,
                                                            "src": "24216:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4753,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4684,
                                                            "src": "24229:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 4754,
                                                            "name": "relayHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4707,
                                                            "src": "24240:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 4750,
                                                        "name": "DepositRelayed",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3988,
                                                        "src": "24188:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_struct$_DepositData_$3936_memory_ptr_$_t_struct$_RelayData_$3952_memory_ptr_$_t_bytes32_$returns$__$",
                                                            "typeString": "function (bytes32,struct BridgePool.DepositData memory,struct BridgePool.RelayData memory,bytes32)"
                                                        }
                                                    },
                                                    "id": 4755,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "24188:62:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4756,
                                                "nodeType": "EmitStatement",
                                                "src": "24183:67:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4620,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "20534:705:14",
                                        "text": " @notice Called by Relayer to execute a slow relay from L2 to L1, fulfilling a corresponding deposit order.\n @dev There can only be one pending relay for a deposit.\n @dev Caller must have approved this contract to spend the total bond + amount - fees for `l1Token`.\n @dev This function can only be called if relays are enabled for this bridge pool.\n @param depositData the deposit data struct containing all the user's deposit information.\n @param realizedLpFeePct LP fee calculated off-chain considering the L1 pool liquidity at deposit time, before\n      quoteTimestamp. The OO acts to verify the correctness of this realized fee. Cannot exceed 50%."
                                    },
                                    "functionSelector": "13111725",
                                    "id": 4758,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 4628,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4627,
                                                "name": "onlyIfRelaysEnabld",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 4060,
                                                "src": "21346:18:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "21346:20:14"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 4630,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4629,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "21375:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "21375:14:14"
                                        }
                                    ],
                                    "name": "relayDeposit",
                                    "nameLocation": "21253:12:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4626,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4623,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "21285:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4758,
                                                "src": "21266:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 4622,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4621,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "21266:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "21266:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4625,
                                                "mutability": "mutable",
                                                "name": "realizedLpFeePct",
                                                "nameLocation": "21305:16:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4758,
                                                "src": "21298:23:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 4624,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "21298:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "21265:57:14"
                                    },
                                    "returnParameters": {
                                        "id": 4631,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "21394:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "21244:3013:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 4881,
                                        "nodeType": "Block",
                                        "src": "25884:1635:14",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    4771
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4771,
                                                        "mutability": "mutable",
                                                        "name": "depositHash",
                                                        "nameLocation": "25902:11:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4881,
                                                        "src": "25894:19:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4770,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "25894:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4775,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4773,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4762,
                                                            "src": "25932:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        ],
                                                        "id": 4772,
                                                        "name": "_getDepositHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5715,
                                                        "src": "25916:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (struct BridgePool.DepositData memory) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4774,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "25916:28:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "25894:50:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4777,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4771,
                                                            "src": "25977:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4778,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4765,
                                                            "src": "25990:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4776,
                                                        "name": "_validateRelayDataHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5576,
                                                        "src": "25954:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_RelayData_$3952_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes32,struct BridgePool.RelayData memory) view"
                                                        }
                                                    },
                                                    "id": 4779,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "25954:46:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4780,
                                                "nodeType": "ExpressionStatement",
                                                "src": "25954:46:14"
                                            },
                                            {
                                                "assignments": [
                                                    4782
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4782,
                                                        "mutability": "mutable",
                                                        "name": "instantRelayHash",
                                                        "nameLocation": "26018:16:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4881,
                                                        "src": "26010:24:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4781,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "26010:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4787,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4784,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4771,
                                                            "src": "26058:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4785,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4765,
                                                            "src": "26071:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4783,
                                                        "name": "_getInstantRelayHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5596,
                                                        "src": "26037:20:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes32,struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4786,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26037:44:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "26010:71:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 4810,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                },
                                                                "id": 4801,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 4795,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "arguments": [],
                                                                        "expression": {
                                                                            "argumentTypes": [],
                                                                            "id": 4789,
                                                                            "name": "getCurrentTime",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3789,
                                                                            "src": "26215:14:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                                "typeString": "function () view returns (uint256)"
                                                                            }
                                                                        },
                                                                        "id": 4790,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "26215:16:14",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "<",
                                                                    "rightExpression": {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint32",
                                                                            "typeString": "uint32"
                                                                        },
                                                                        "id": 4794,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "expression": {
                                                                                "id": 4791,
                                                                                "name": "relayData",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 4765,
                                                                                "src": "26234:9:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                                }
                                                                            },
                                                                            "id": 4792,
                                                                            "isConstant": false,
                                                                            "isLValue": true,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "priceRequestTime",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 3947,
                                                                            "src": "26234:26:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint32",
                                                                                "typeString": "uint32"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "+",
                                                                        "rightExpression": {
                                                                            "id": 4793,
                                                                            "name": "optimisticOracleLiveness",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3898,
                                                                            "src": "26263:24:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint32",
                                                                                "typeString": "uint32"
                                                                            }
                                                                        },
                                                                        "src": "26234:53:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint32",
                                                                            "typeString": "uint32"
                                                                        }
                                                                    },
                                                                    "src": "26215:72:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "&&",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                        "typeString": "enum BridgePool.RelayState"
                                                                    },
                                                                    "id": 4800,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "expression": {
                                                                            "id": 4796,
                                                                            "name": "relayData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4765,
                                                                            "src": "26307:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                "typeString": "struct BridgePool.RelayData memory"
                                                                            }
                                                                        },
                                                                        "id": 4797,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "relayState",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3939,
                                                                        "src": "26307:20:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                            "typeString": "enum BridgePool.RelayState"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "==",
                                                                    "rightExpression": {
                                                                        "expression": {
                                                                            "id": 4798,
                                                                            "name": "RelayState",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3919,
                                                                            "src": "26331:10:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_enum$_RelayState_$3919_$",
                                                                                "typeString": "type(enum BridgePool.RelayState)"
                                                                            }
                                                                        },
                                                                        "id": 4799,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "Pending",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3917,
                                                                        "src": "26331:18:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                            "typeString": "enum BridgePool.RelayState"
                                                                        }
                                                                    },
                                                                    "src": "26307:42:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "src": "26215:134:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "&&",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                "id": 4809,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "baseExpression": {
                                                                        "id": 4802,
                                                                        "name": "instantRelays",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3960,
                                                                        "src": "26369:13:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                            "typeString": "mapping(bytes32 => address)"
                                                                        }
                                                                    },
                                                                    "id": 4804,
                                                                    "indexExpression": {
                                                                        "id": 4803,
                                                                        "name": "instantRelayHash",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4782,
                                                                        "src": "26383:16:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    },
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "IndexAccess",
                                                                    "src": "26369:31:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "hexValue": "30",
                                                                            "id": 4807,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "26412:1:14",
                                                                            "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": 4806,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "26404:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 4805,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "26404:7:14",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 4808,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "26404:10:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "26369:45:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "26215:199:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "52656c61792063616e6e6f742062652073706564207570",
                                                            "id": 4811,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "26428:25:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6",
                                                                "typeString": "literal_string \"Relay cannot be sped up\""
                                                            },
                                                            "value": "Relay cannot be sped up"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c8bcbbea08f082ad91ea1634456e9e842f057e2163ad84095443897beefb18a6",
                                                                "typeString": "literal_string \"Relay cannot be sped up\""
                                                            }
                                                        ],
                                                        "id": 4788,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "26091:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4812,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26091:372:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4813,
                                                "nodeType": "ExpressionStatement",
                                                "src": "26091:372:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4819,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 4814,
                                                            "name": "instantRelays",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3960,
                                                            "src": "26473:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                "typeString": "mapping(bytes32 => address)"
                                                            }
                                                        },
                                                        "id": 4816,
                                                        "indexExpression": {
                                                            "id": 4815,
                                                            "name": "instantRelayHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4782,
                                                            "src": "26487:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "26473:31:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 4817,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -15,
                                                            "src": "26507:3:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 4818,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "26507:10:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "26473:44:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "id": 4820,
                                                "nodeType": "ExpressionStatement",
                                                "src": "26473:44:14"
                                            },
                                            {
                                                "assignments": [
                                                    4822
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4822,
                                                        "mutability": "mutable",
                                                        "name": "feesTotal",
                                                        "nameLocation": "26727:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4881,
                                                        "src": "26719:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4821,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "26719:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4835,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            "id": 4831,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                },
                                                                "id": 4828,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 4824,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4765,
                                                                        "src": "26786:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 4825,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "realizedLpFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3945,
                                                                    "src": "26786:26:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "id": 4826,
                                                                        "name": "depositData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4762,
                                                                        "src": "26815:11:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                            "typeString": "struct BridgePool.DepositData memory"
                                                                        }
                                                                    },
                                                                    "id": 4827,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "slowRelayFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3931,
                                                                    "src": "26815:27:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "src": "26786:56:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 4829,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4762,
                                                                    "src": "26845:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                "id": 4830,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "instantRelayFeePct",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3933,
                                                                "src": "26845:30:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            "src": "26786:89:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4832,
                                                                "name": "depositData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4762,
                                                                "src": "26893:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                    "typeString": "struct BridgePool.DepositData memory"
                                                                }
                                                            },
                                                            "id": 4833,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "amount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3929,
                                                            "src": "26893:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 4823,
                                                        "name": "_getAmountFromPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5682,
                                                        "src": "26751:17:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint64,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 4834,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "26751:174:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "26719:206:14"
                                            },
                                            {
                                                "assignments": [
                                                    4837
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4837,
                                                        "mutability": "mutable",
                                                        "name": "recipientAmount",
                                                        "nameLocation": "27059:15:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 4881,
                                                        "src": "27051:23:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4836,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "27051:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4842,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4841,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4838,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4762,
                                                            "src": "27077:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        "id": 4839,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "amount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3929,
                                                        "src": "27077:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 4840,
                                                        "name": "feesTotal",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4822,
                                                        "src": "27098:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "27077:30:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "27051:56:14"
                                            },
                                            {
                                                "condition": {
                                                    "id": 4843,
                                                    "name": "isWethPool",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3887,
                                                    "src": "27121:10:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 4866,
                                                                    "name": "msg",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -15,
                                                                    "src": "27396:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_message",
                                                                        "typeString": "msg"
                                                                    }
                                                                },
                                                                "id": 4867,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "sender",
                                                                "nodeType": "MemberAccess",
                                                                "src": "27396:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 4868,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4762,
                                                                    "src": "27408:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                "id": 4869,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "l1Recipient",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3925,
                                                                "src": "27408:23:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address_payable",
                                                                    "typeString": "address payable"
                                                                }
                                                            },
                                                            {
                                                                "id": 4870,
                                                                "name": "recipientAmount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4837,
                                                                "src": "27433:15:14",
                                                                "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"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 4863,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3877,
                                                                "src": "27371:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 4865,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "safeTransferFrom",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 666,
                                                            "src": "27371:24:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                "typeString": "function (contract IERC20,address,address,uint256)"
                                                            }
                                                        },
                                                        "id": 4871,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "27371:78:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 4872,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "27371:78:14"
                                                },
                                                "id": 4873,
                                                "nodeType": "IfStatement",
                                                "src": "27117:332:14",
                                                "trueBody": {
                                                    "id": 4862,
                                                    "nodeType": "Block",
                                                    "src": "27133:232:14",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 4847,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -15,
                                                                            "src": "27172:3:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 4848,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "27172:10:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 4851,
                                                                                "name": "this",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": -28,
                                                                                "src": "27192:4:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                                    "typeString": "contract BridgePool"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                                    "typeString": "contract BridgePool"
                                                                                }
                                                                            ],
                                                                            "id": 4850,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "27184:7:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                                "typeString": "type(address)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 4849,
                                                                                "name": "address",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "27184:7:14",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 4852,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "27184:13:14",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 4853,
                                                                        "name": "recipientAmount",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4837,
                                                                        "src": "27199:15:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 4844,
                                                                        "name": "l1Token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3877,
                                                                        "src": "27147:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 4846,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "safeTransferFrom",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 666,
                                                                    "src": "27147:24:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                        "typeString": "function (contract IERC20,address,address,uint256)"
                                                                    }
                                                                },
                                                                "id": 4854,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "27147:68:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 4855,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "27147:68:14"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 4857,
                                                                            "name": "depositData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4762,
                                                                            "src": "27243:11:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                                "typeString": "struct BridgePool.DepositData memory"
                                                                            }
                                                                        },
                                                                        "id": 4858,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "l1Recipient",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3925,
                                                                        "src": "27243:23:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 4859,
                                                                        "name": "recipientAmount",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4837,
                                                                        "src": "27268:15:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 4856,
                                                                    "name": "_unwrapWETHTo",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5945,
                                                                    "src": "27229:13:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (address payable,uint256)"
                                                                    }
                                                                },
                                                                "id": 4860,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "27229:55:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 4861,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "27229:55:14"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 4875,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4771,
                                                            "src": "27477:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 4876,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "27490:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 4877,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "27490:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 4878,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4765,
                                                            "src": "27502:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4874,
                                                        "name": "RelaySpedUp",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3997,
                                                        "src": "27465:11:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_struct$_RelayData_$3952_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes32,address,struct BridgePool.RelayData memory)"
                                                        }
                                                    },
                                                    "id": 4879,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "27465:47:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4880,
                                                "nodeType": "EmitStatement",
                                                "src": "27460:52:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4759,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "24263:1512:14",
                                        "text": " @notice Instantly relay a deposit amount minus fees to the l1Recipient. Instant relayer earns a reward following\n the pending relay challenge period.\n @dev We assume that the caller has performed an off-chain check that the deposit data they are attempting to\n relay is valid. If the deposit data is invalid, then the instant relayer has no recourse to receive their funds\n back after the invalid deposit data is disputed. Moreover, no one will be able to resubmit a relay for the\n invalid deposit data because they know it will get disputed again. On the other hand, if the deposit data is\n valid, then even if it is falsely disputed, the instant relayer will eventually get reimbursed because someone\n else will be incentivized to resubmit the relay to earn slow relayer rewards. Once the valid relay is finalized,\n the instant relayer will be reimbursed. Therefore, the caller has the same responsibility as the disputer in\n validating the relay data.\n @dev Caller must have approved this contract to spend the deposit amount of L1 tokens to relay. There can only\n be one instant relayer per relay attempt. You cannot speed up a relay that is past liveness.\n @param depositData Unique set of L2 deposit data that caller is trying to instantly relay.\n @param relayData Parameters of Relay that caller is attempting to speedup. Must hash to the stored relay hash\n for this deposit or this method will revert."
                                    },
                                    "functionSelector": "bec73ade",
                                    "id": 4882,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 4768,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4767,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "25869:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "25869:14:14"
                                        }
                                    ],
                                    "name": "speedUpRelay",
                                    "nameLocation": "25789:12:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4766,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4762,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "25821:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4882,
                                                "src": "25802:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 4761,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4760,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "25802:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "25802:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4765,
                                                "mutability": "mutable",
                                                "name": "relayData",
                                                "nameLocation": "25851:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 4882,
                                                "src": "25834:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 4764,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4763,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "25834:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "25834:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "25801:60:14"
                                    },
                                    "returnParameters": {
                                        "id": 4769,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "25884:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "25780:1739:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5128,
                                        "nodeType": "Block",
                                        "src": "28309:4838:14",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    4895
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4895,
                                                        "mutability": "mutable",
                                                        "name": "depositHash",
                                                        "nameLocation": "28327:11:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5128,
                                                        "src": "28319:19:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4894,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "28319:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4899,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4897,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4886,
                                                            "src": "28357:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        ],
                                                        "id": 4896,
                                                        "name": "_getDepositHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5715,
                                                        "src": "28341:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (struct BridgePool.DepositData memory) view returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4898,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "28341:28:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "28319:50:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 4901,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4895,
                                                            "src": "28402:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4902,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4889,
                                                            "src": "28415:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4900,
                                                        "name": "_validateRelayDataHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5576,
                                                        "src": "28379:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_RelayData_$3952_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes32,struct BridgePool.RelayData memory) view"
                                                        }
                                                    },
                                                    "id": 4903,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "28379:46:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4904,
                                                "nodeType": "ExpressionStatement",
                                                "src": "28379:46:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                "typeString": "enum BridgePool.RelayState"
                                                            },
                                                            "id": 4910,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "expression": {
                                                                    "id": 4906,
                                                                    "name": "relayData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4889,
                                                                    "src": "28443:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                        "typeString": "struct BridgePool.RelayData memory"
                                                                    }
                                                                },
                                                                "id": 4907,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "relayState",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3939,
                                                                "src": "28443:20:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                    "typeString": "enum BridgePool.RelayState"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "expression": {
                                                                    "id": 4908,
                                                                    "name": "RelayState",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3919,
                                                                    "src": "28467:10:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_enum$_RelayState_$3919_$",
                                                                        "typeString": "type(enum BridgePool.RelayState)"
                                                                    }
                                                                },
                                                                "id": 4909,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "Pending",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3917,
                                                                "src": "28467:18:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                    "typeString": "enum BridgePool.RelayState"
                                                                }
                                                            },
                                                            "src": "28443:42:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "416c726561647920736574746c6564",
                                                            "id": 4911,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "28487:17:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c8ab8a2be779d9262c8a9592ba3da06668869724ea761c2b8bed96453f72b21e",
                                                                "typeString": "literal_string \"Already settled\""
                                                            },
                                                            "value": "Already settled"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c8ab8a2be779d9262c8a9592ba3da06668869724ea761c2b8bed96453f72b21e",
                                                                "typeString": "literal_string \"Already settled\""
                                                            }
                                                        ],
                                                        "id": 4905,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "28435:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4912,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "28435:70:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4913,
                                                "nodeType": "ExpressionStatement",
                                                "src": "28435:70:14"
                                            },
                                            {
                                                "assignments": [
                                                    4915
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4915,
                                                        "mutability": "mutable",
                                                        "name": "expirationTime",
                                                        "nameLocation": "28522:14:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5128,
                                                        "src": "28515:21:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        },
                                                        "typeName": {
                                                            "id": 4914,
                                                            "name": "uint32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "28515:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4920,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    },
                                                    "id": 4919,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4916,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4889,
                                                            "src": "28539:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        },
                                                        "id": 4917,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "priceRequestTime",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3947,
                                                        "src": "28539:26:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 4918,
                                                        "name": "optimisticOracleLiveness",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3898,
                                                        "src": "28568:24:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "src": "28539:53:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "28515:77:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 4925,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 4922,
                                                                "name": "expirationTime",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4915,
                                                                "src": "28610:14:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint32",
                                                                    "typeString": "uint32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "<=",
                                                            "rightExpression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 4923,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3789,
                                                                    "src": "28628:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 4924,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "28628:16:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "28610:34:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4e6f7420736574746c6561626c6520796574",
                                                            "id": 4926,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "28646:20:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_343ea3fc08d6a86d9bb33bff5b89a4880beb2877c0758a5b9d28acf6f4331668",
                                                                "typeString": "literal_string \"Not settleable yet\""
                                                            },
                                                            "value": "Not settleable yet"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_343ea3fc08d6a86d9bb33bff5b89a4880beb2877c0758a5b9d28acf6f4331668",
                                                                "typeString": "literal_string \"Not settleable yet\""
                                                            }
                                                        ],
                                                        "id": 4921,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "28602:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4927,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "28602:65:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4928,
                                                "nodeType": "ExpressionStatement",
                                                "src": "28602:65:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "id": 4941,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                "id": 4934,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 4930,
                                                                        "name": "msg",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -15,
                                                                        "src": "28938:3:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_magic_message",
                                                                            "typeString": "msg"
                                                                        }
                                                                    },
                                                                    "id": 4931,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "sender",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "28938:10:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "id": 4932,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4889,
                                                                        "src": "28952:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 4933,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "slowRelayer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3941,
                                                                    "src": "28952:21:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "src": "28938:35:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "||",
                                                            "rightExpression": {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 4940,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 4935,
                                                                        "name": "getCurrentTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3789,
                                                                        "src": "28977:14:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                            "typeString": "function () view returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 4936,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "28977:16:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": ">",
                                                                "rightExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint32",
                                                                        "typeString": "uint32"
                                                                    },
                                                                    "id": 4939,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 4937,
                                                                        "name": "expirationTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4915,
                                                                        "src": "28996:14:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint32",
                                                                            "typeString": "uint32"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "+",
                                                                    "rightExpression": {
                                                                        "hexValue": "3135",
                                                                        "id": 4938,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "29013:10:14",
                                                                        "subdenomination": "minutes",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_900_by_1",
                                                                            "typeString": "int_const 900"
                                                                        },
                                                                        "value": "15"
                                                                    },
                                                                    "src": "28996:27:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint32",
                                                                        "typeString": "uint32"
                                                                    }
                                                                },
                                                                "src": "28977:46:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                }
                                                            },
                                                            "src": "28938:85:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4e6f7420736c6f772072656c61796572",
                                                            "id": 4942,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "29037:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_9c5c2898dfaf68f9d9f7da005f4e14e47b970b541fdaa53f62f755602f65f784",
                                                                "typeString": "literal_string \"Not slow relayer\""
                                                            },
                                                            "value": "Not slow relayer"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_9c5c2898dfaf68f9d9f7da005f4e14e47b970b541fdaa53f62f755602f65f784",
                                                                "typeString": "literal_string \"Not slow relayer\""
                                                            }
                                                        ],
                                                        "id": 4929,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "28917:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 4943,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "28917:148:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 4944,
                                                "nodeType": "ExpressionStatement",
                                                "src": "28917:148:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 4966,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "baseExpression": {
                                                            "id": 4945,
                                                            "name": "relays",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3956,
                                                            "src": "29166:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                                                "typeString": "mapping(bytes32 => bytes32)"
                                                            }
                                                        },
                                                        "id": 4947,
                                                        "indexExpression": {
                                                            "id": 4946,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4895,
                                                            "src": "29173:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "29166:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 4950,
                                                                            "name": "RelayState",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3919,
                                                                            "src": "29259:10:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_enum$_RelayState_$3919_$",
                                                                                "typeString": "type(enum BridgePool.RelayState)"
                                                                            }
                                                                        },
                                                                        "id": 4951,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "memberName": "Finalized",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3918,
                                                                        "src": "29259:20:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                            "typeString": "enum BridgePool.RelayState"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 4952,
                                                                            "name": "relayData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4889,
                                                                            "src": "29310:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                "typeString": "struct BridgePool.RelayData memory"
                                                                            }
                                                                        },
                                                                        "id": 4953,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "slowRelayer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3941,
                                                                        "src": "29310:21:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 4954,
                                                                            "name": "relayData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4889,
                                                                            "src": "29358:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                "typeString": "struct BridgePool.RelayData memory"
                                                                            }
                                                                        },
                                                                        "id": 4955,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "relayId",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3943,
                                                                        "src": "29358:17:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint32",
                                                                            "typeString": "uint32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 4956,
                                                                            "name": "relayData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4889,
                                                                            "src": "29411:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                "typeString": "struct BridgePool.RelayData memory"
                                                                            }
                                                                        },
                                                                        "id": 4957,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "realizedLpFeePct",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3945,
                                                                        "src": "29411:26:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 4958,
                                                                            "name": "relayData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4889,
                                                                            "src": "29473:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                "typeString": "struct BridgePool.RelayData memory"
                                                                            }
                                                                        },
                                                                        "id": 4959,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "priceRequestTime",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3947,
                                                                        "src": "29473:26:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint32",
                                                                            "typeString": "uint32"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 4960,
                                                                            "name": "relayData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4889,
                                                                            "src": "29531:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                "typeString": "struct BridgePool.RelayData memory"
                                                                            }
                                                                        },
                                                                        "id": 4961,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "proposerBond",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3949,
                                                                        "src": "29531:22:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    {
                                                                        "expression": {
                                                                            "id": 4962,
                                                                            "name": "relayData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4889,
                                                                            "src": "29581:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                "typeString": "struct BridgePool.RelayData memory"
                                                                            }
                                                                        },
                                                                        "id": 4963,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "finalFee",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3951,
                                                                        "src": "29581:18:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_enum$_RelayState_$3919",
                                                                            "typeString": "enum BridgePool.RelayState"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint32",
                                                                            "typeString": "uint32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint32",
                                                                            "typeString": "uint32"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 4949,
                                                                    "name": "RelayData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3952,
                                                                    "src": "29219:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_struct$_RelayData_$3952_storage_ptr_$",
                                                                        "typeString": "type(struct BridgePool.RelayData storage pointer)"
                                                                    }
                                                                },
                                                                "id": 4964,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "structConstructorCall",
                                                                "lValueRequested": false,
                                                                "names": [
                                                                    "relayState",
                                                                    "slowRelayer",
                                                                    "relayId",
                                                                    "realizedLpFeePct",
                                                                    "priceRequestTime",
                                                                    "proposerBond",
                                                                    "finalFee"
                                                                ],
                                                                "nodeType": "FunctionCall",
                                                                "src": "29219:395:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                    "typeString": "struct BridgePool.RelayData memory"
                                                                }
                                                            ],
                                                            "id": 4948,
                                                            "name": "_getRelayDataHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5556,
                                                            "src": "29188:17:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                                "typeString": "function (struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 4965,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "29188:436:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "29166:458:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "id": 4967,
                                                "nodeType": "ExpressionStatement",
                                                "src": "29166:458:14"
                                            },
                                            {
                                                "assignments": [
                                                    4969
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4969,
                                                        "mutability": "mutable",
                                                        "name": "instantRelayerOrRecipientAmount",
                                                        "nameLocation": "30461:31:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5128,
                                                        "src": "30453:39:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 4968,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "30453:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4982,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 4981,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 4970,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4886,
                                                            "src": "30507:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        "id": 4971,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "amount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3929,
                                                        "src": "30507:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                },
                                                                "id": 4977,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "expression": {
                                                                        "id": 4973,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4889,
                                                                        "src": "30562:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 4974,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "realizedLpFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3945,
                                                                    "src": "30562:26:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "expression": {
                                                                        "id": 4975,
                                                                        "name": "depositData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4886,
                                                                        "src": "30591:11:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                            "typeString": "struct BridgePool.DepositData memory"
                                                                        }
                                                                    },
                                                                    "id": 4976,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "slowRelayFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3931,
                                                                    "src": "30591:27:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "src": "30562:56:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                }
                                                            },
                                                            {
                                                                "expression": {
                                                                    "id": 4978,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4886,
                                                                    "src": "30620:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                "id": 4979,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "amount",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3929,
                                                                "src": "30620:18:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint64",
                                                                    "typeString": "uint64"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 4972,
                                                            "name": "_getAmountFromPct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5682,
                                                            "src": "30544:17:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint256_$returns$_t_uint256_$",
                                                                "typeString": "function (uint64,uint256) pure returns (uint256)"
                                                            }
                                                        },
                                                        "id": 4980,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "30544:95:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "30507:132:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "30453:186:14"
                                            },
                                            {
                                                "assignments": [
                                                    4984
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4984,
                                                        "mutability": "mutable",
                                                        "name": "instantRelayHash",
                                                        "nameLocation": "30751:16:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5128,
                                                        "src": "30743:24:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        },
                                                        "typeName": {
                                                            "id": 4983,
                                                            "name": "bytes32",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "30743:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4989,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 4986,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4895,
                                                            "src": "30791:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "id": 4987,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4889,
                                                            "src": "30804:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 4985,
                                                        "name": "_getInstantRelayHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5596,
                                                        "src": "30770:20:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes32,struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 4988,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "30770:44:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "30743:71:14"
                                            },
                                            {
                                                "assignments": [
                                                    4991
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 4991,
                                                        "mutability": "mutable",
                                                        "name": "instantRelayer",
                                                        "nameLocation": "30832:14:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5128,
                                                        "src": "30824:22:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "typeName": {
                                                            "id": 4990,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "30824:7:14",
                                                            "stateMutability": "nonpayable",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 4995,
                                                "initialValue": {
                                                    "baseExpression": {
                                                        "id": 4992,
                                                        "name": "instantRelays",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3960,
                                                        "src": "30849:13:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                            "typeString": "mapping(bytes32 => address)"
                                                        }
                                                    },
                                                    "id": 4994,
                                                    "indexExpression": {
                                                        "id": 4993,
                                                        "name": "instantRelayHash",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4984,
                                                        "src": "30863:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "IndexAccess",
                                                    "src": "30849:31:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "30824:56:14"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "id": 5003,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 4996,
                                                        "name": "isWethPool",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3887,
                                                        "src": "31084:10:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&&",
                                                    "rightExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        },
                                                        "id": 5002,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 4997,
                                                            "name": "instantRelayer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4991,
                                                            "src": "31098:14:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 5000,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "31124:1:14",
                                                                    "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": 4999,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "31116:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 4998,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "31116:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5001,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "31116:10:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "src": "31098:28:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "31084:42:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "condition": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    },
                                                                    "id": 5019,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 5014,
                                                                        "name": "instantRelayer",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4991,
                                                                        "src": "31512:14:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "!=",
                                                                    "rightExpression": {
                                                                        "arguments": [
                                                                            {
                                                                                "hexValue": "30",
                                                                                "id": 5017,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "31538:1:14",
                                                                                "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": 5016,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "nodeType": "ElementaryTypeNameExpression",
                                                                            "src": "31530:7:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_address_$",
                                                                                "typeString": "type(address)"
                                                                            },
                                                                            "typeName": {
                                                                                "id": 5015,
                                                                                "name": "address",
                                                                                "nodeType": "ElementaryTypeName",
                                                                                "src": "31530:7:14",
                                                                                "typeDescriptions": {}
                                                                            }
                                                                        },
                                                                        "id": 5018,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "31530:10:14",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    "src": "31512:28:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                    }
                                                                },
                                                                "falseExpression": {
                                                                    "expression": {
                                                                        "id": 5021,
                                                                        "name": "depositData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4886,
                                                                        "src": "31560:11:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                            "typeString": "struct BridgePool.DepositData memory"
                                                                        }
                                                                    },
                                                                    "id": 5022,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "l1Recipient",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3925,
                                                                    "src": "31560:23:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                },
                                                                "id": 5023,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "Conditional",
                                                                "src": "31512:71:14",
                                                                "trueExpression": {
                                                                    "id": 5020,
                                                                    "name": "instantRelayer",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4991,
                                                                    "src": "31543:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                },
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "id": 5024,
                                                                "name": "instantRelayerOrRecipientAmount",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4969,
                                                                "src": "31601:31:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 5011,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3877,
                                                                "src": "31474:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 5013,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "safeTransfer",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 640,
                                                            "src": "31474:20:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                "typeString": "function (contract IERC20,address,uint256)"
                                                            }
                                                        },
                                                        "id": 5025,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "31474:172:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 5026,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "31474:172:14"
                                                },
                                                "id": 5027,
                                                "nodeType": "IfStatement",
                                                "src": "31080:566:14",
                                                "trueBody": {
                                                    "id": 5010,
                                                    "nodeType": "Block",
                                                    "src": "31128:328:14",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5005,
                                                                            "name": "depositData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4886,
                                                                            "src": "31156:11:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                                "typeString": "struct BridgePool.DepositData memory"
                                                                            }
                                                                        },
                                                                        "id": 5006,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "l1Recipient",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3925,
                                                                        "src": "31156:23:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5007,
                                                                        "name": "instantRelayerOrRecipientAmount",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4969,
                                                                        "src": "31181:31:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "id": 5004,
                                                                    "name": "_unwrapWETHTo",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5945,
                                                                    "src": "31142:13:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                                                        "typeString": "function (address payable,uint256)"
                                                                    }
                                                                },
                                                                "id": 5008,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "31142:71:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 5009,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "31142:71:14"
                                                        }
                                                    ]
                                                }
                                            },
                                            {
                                                "assignments": [
                                                    5029
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5029,
                                                        "mutability": "mutable",
                                                        "name": "slowRelayerReward",
                                                        "nameLocation": "31945:17:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5128,
                                                        "src": "31937:25:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5028,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "31937:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5036,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 5031,
                                                                "name": "depositData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4886,
                                                                "src": "31983:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                    "typeString": "struct BridgePool.DepositData memory"
                                                                }
                                                            },
                                                            "id": 5032,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "slowRelayFeePct",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3931,
                                                            "src": "31983:27:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 5033,
                                                                "name": "depositData",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 4886,
                                                                "src": "32012:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                    "typeString": "struct BridgePool.DepositData memory"
                                                                }
                                                            },
                                                            "id": 5034,
                                                            "isConstant": false,
                                                            "isLValue": true,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "amount",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 3929,
                                                            "src": "32012:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5030,
                                                        "name": "_getAmountFromPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5682,
                                                        "src": "31965:17:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint64,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5035,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "31965:66:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "31937:94:14"
                                            },
                                            {
                                                "assignments": [
                                                    5038
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5038,
                                                        "mutability": "mutable",
                                                        "name": "totalBond",
                                                        "nameLocation": "32049:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5128,
                                                        "src": "32041:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5037,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "32041:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5044,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5043,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 5039,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4889,
                                                            "src": "32061:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        },
                                                        "id": 5040,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "finalFee",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3951,
                                                        "src": "32061:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 5041,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4889,
                                                            "src": "32082:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        },
                                                        "id": 5042,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "proposerBond",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3949,
                                                        "src": "32082:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "32061:43:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "32041:63:14"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "id": 5049,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "expression": {
                                                            "id": 5045,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4889,
                                                            "src": "32118:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        },
                                                        "id": 5046,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "slowRelayer",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3941,
                                                        "src": "32118:21:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "expression": {
                                                            "id": 5047,
                                                            "name": "msg",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": -15,
                                                            "src": "32143:3:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_magic_message",
                                                                "typeString": "msg"
                                                            }
                                                        },
                                                        "id": 5048,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "sender",
                                                        "nodeType": "MemberAccess",
                                                        "src": "32143:10:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "src": "32118:35:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 5076,
                                                    "nodeType": "Block",
                                                    "src": "32256:144:14",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5063,
                                                                            "name": "relayData",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 4889,
                                                                            "src": "32291:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                                "typeString": "struct BridgePool.RelayData memory"
                                                                            }
                                                                        },
                                                                        "id": 5064,
                                                                        "isConstant": false,
                                                                        "isLValue": true,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "slowRelayer",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 3941,
                                                                        "src": "32291:21:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5065,
                                                                        "name": "totalBond",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5038,
                                                                        "src": "32314:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 5060,
                                                                        "name": "l1Token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3877,
                                                                        "src": "32270:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 5062,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "safeTransfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 640,
                                                                    "src": "32270:20:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                        "typeString": "function (contract IERC20,address,uint256)"
                                                                    }
                                                                },
                                                                "id": 5066,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "32270:54:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 5067,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "32270:54:14"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5071,
                                                                            "name": "msg",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": -15,
                                                                            "src": "32359:3:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_magic_message",
                                                                                "typeString": "msg"
                                                                            }
                                                                        },
                                                                        "id": 5072,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "sender",
                                                                        "nodeType": "MemberAccess",
                                                                        "src": "32359:10:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5073,
                                                                        "name": "slowRelayerReward",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5029,
                                                                        "src": "32371:17:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 5068,
                                                                        "name": "l1Token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3877,
                                                                        "src": "32338:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 5070,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "safeTransfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 640,
                                                                    "src": "32338:20:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                        "typeString": "function (contract IERC20,address,uint256)"
                                                                    }
                                                                },
                                                                "id": 5074,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "32338:51:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 5075,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "32338:51:14"
                                                        }
                                                    ]
                                                },
                                                "id": 5077,
                                                "nodeType": "IfStatement",
                                                "src": "32114:286:14",
                                                "trueBody": {
                                                    "expression": {
                                                        "arguments": [
                                                            {
                                                                "expression": {
                                                                    "id": 5053,
                                                                    "name": "relayData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 4889,
                                                                    "src": "32188:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                        "typeString": "struct BridgePool.RelayData memory"
                                                                    }
                                                                },
                                                                "id": 5054,
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "slowRelayer",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 3941,
                                                                "src": "32188:21:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            },
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 5057,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 5055,
                                                                    "name": "slowRelayerReward",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5029,
                                                                    "src": "32211:17:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "+",
                                                                "rightExpression": {
                                                                    "id": 5056,
                                                                    "name": "totalBond",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5038,
                                                                    "src": "32231:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "32211:29:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 5050,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3877,
                                                                "src": "32167:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 5052,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "safeTransfer",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 640,
                                                            "src": "32167:20:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                "typeString": "function (contract IERC20,address,uint256)"
                                                            }
                                                        },
                                                        "id": 5058,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "32167:74:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_tuple$__$",
                                                            "typeString": "tuple()"
                                                        }
                                                    },
                                                    "id": 5059,
                                                    "nodeType": "ExpressionStatement",
                                                    "src": "32167:74:14"
                                                }
                                            },
                                            {
                                                "assignments": [
                                                    5079
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5079,
                                                        "mutability": "mutable",
                                                        "name": "totalReservesSent",
                                                        "nameLocation": "32418:17:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5128,
                                                        "src": "32410:25:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5078,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "32410:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5083,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5082,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5080,
                                                        "name": "instantRelayerOrRecipientAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4969,
                                                        "src": "32438:31:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 5081,
                                                        "name": "slowRelayerReward",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5029,
                                                        "src": "32472:17:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "32438:51:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "32410:79:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5087,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5084,
                                                        "name": "pendingReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3885,
                                                        "src": "32569:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "id": 5085,
                                                            "name": "depositData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4886,
                                                            "src": "32588:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                "typeString": "struct BridgePool.DepositData memory"
                                                            }
                                                        },
                                                        "id": 5086,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "amount",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 3929,
                                                        "src": "32588:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "32569:37:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5088,
                                                "nodeType": "ExpressionStatement",
                                                "src": "32569:37:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5091,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5089,
                                                        "name": "liquidReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3881,
                                                        "src": "32616:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "id": 5090,
                                                        "name": "totalReservesSent",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5079,
                                                        "src": "32634:17:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "32616:35:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5092,
                                                "nodeType": "ExpressionStatement",
                                                "src": "32616:35:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5098,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5093,
                                                        "name": "utilizedReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3883,
                                                        "src": "32661:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 5096,
                                                                "name": "totalReservesSent",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5079,
                                                                "src": "32688:17:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 5095,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "32681:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_int256_$",
                                                                "typeString": "type(int256)"
                                                            },
                                                            "typeName": {
                                                                "id": 5094,
                                                                "name": "int256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "32681:6:14",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 5097,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "32681:25:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "32661:45:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "id": 5099,
                                                "nodeType": "ExpressionStatement",
                                                "src": "32661:45:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5102,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5100,
                                                        "name": "bonds",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3904,
                                                        "src": "32716:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "-=",
                                                    "rightHandSide": {
                                                        "id": 5101,
                                                        "name": "totalBond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5038,
                                                        "src": "32725:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "32716:18:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5103,
                                                "nodeType": "ExpressionStatement",
                                                "src": "32716:18:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5104,
                                                        "name": "_updateAccumulatedLpFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5648,
                                                        "src": "32744:24:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 5105,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "32744:26:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5106,
                                                "nodeType": "ExpressionStatement",
                                                "src": "32744:26:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "expression": {
                                                                        "id": 5109,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4889,
                                                                        "src": "32814:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 5110,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "realizedLpFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3945,
                                                                    "src": "32814:26:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 5111,
                                                                        "name": "depositData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 4886,
                                                                        "src": "32842:11:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                            "typeString": "struct BridgePool.DepositData memory"
                                                                        }
                                                                    },
                                                                    "id": 5112,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "amount",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3929,
                                                                    "src": "32842:18:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5108,
                                                                "name": "_getAmountFromPct",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5682,
                                                                "src": "32796:17:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint64,uint256) pure returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5113,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "32796:65:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5107,
                                                        "name": "_allocateLpFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5665,
                                                        "src": "32780:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                                                            "typeString": "function (uint256)"
                                                        }
                                                    },
                                                    "id": 5114,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "32780:82:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5115,
                                                "nodeType": "ExpressionStatement",
                                                "src": "32780:82:14"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 5117,
                                                            "name": "depositHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4895,
                                                            "src": "32891:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 5118,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "32904:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 5119,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "32904:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5120,
                                                            "name": "relayData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4889,
                                                            "src": "32916:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                "typeString": "struct BridgePool.RelayData memory"
                                                            }
                                                        ],
                                                        "id": 5116,
                                                        "name": "RelaySettled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4022,
                                                        "src": "32878:12:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_struct$_RelayData_$3952_memory_ptr_$returns$__$",
                                                            "typeString": "function (bytes32,address,struct BridgePool.RelayData memory)"
                                                        }
                                                    },
                                                    "id": 5121,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "32878:48:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5122,
                                                "nodeType": "EmitStatement",
                                                "src": "32873:53:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5126,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "UnaryOperation",
                                                    "operator": "delete",
                                                    "prefix": true,
                                                    "src": "33102:38:14",
                                                    "subExpression": {
                                                        "baseExpression": {
                                                            "id": 5123,
                                                            "name": "instantRelays",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3960,
                                                            "src": "33109:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                                                "typeString": "mapping(bytes32 => address)"
                                                            }
                                                        },
                                                        "id": 5125,
                                                        "indexExpression": {
                                                            "id": 5124,
                                                            "name": "instantRelayHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 4984,
                                                            "src": "33123:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": true,
                                                        "nodeType": "IndexAccess",
                                                        "src": "33109:31:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5127,
                                                "nodeType": "ExpressionStatement",
                                                "src": "33102:38:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 4883,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "27525:676:14",
                                        "text": " @notice Reward relayers if a pending relay price request has a price available on the OptimisticOracle. Mark\n the relay as complete.\n @dev We use the relayData and depositData to compute the ancillary data that the relay price request is uniquely\n associated with on the OptimisticOracle. If the price request passed in does not match the pending relay price\n request, then this will revert.\n @param depositData Unique set of L2 deposit data that caller is trying to settle a relay for.\n @param relayData Parameters of Relay that caller is attempting to settle. Must hash to the stored relay hash\n for this deposit."
                                    },
                                    "functionSelector": "3fa856c9",
                                    "id": 5129,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 4892,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 4891,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "28294:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "28294:14:14"
                                        }
                                    ],
                                    "name": "settleRelay",
                                    "nameLocation": "28215:11:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 4890,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 4886,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "28246:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5129,
                                                "src": "28227:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 4885,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4884,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "28227:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "28227:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 4889,
                                                "mutability": "mutable",
                                                "name": "relayData",
                                                "nameLocation": "28276:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5129,
                                                "src": "28259:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 4888,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 4887,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "28259:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "28259:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "28226:60:14"
                                    },
                                    "returnParameters": {
                                        "id": 4893,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "28309:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "28206:4941:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5138,
                                        "nodeType": "Block",
                                        "src": "33414:24:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5135,
                                                        "name": "_sync",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5454,
                                                        "src": "33424:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 5136,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "33424:7:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5137,
                                                "nodeType": "ExpressionStatement",
                                                "src": "33424:7:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5130,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "33153:218:14",
                                        "text": " @notice Synchronize any balance changes in this contract with the utilized & liquid reserves. This would be done\n at the conclusion of an L2 -> L1 token transfer via the canonical token bridge."
                                    },
                                    "functionSelector": "fff6cae9",
                                    "id": 5139,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5133,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5132,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "33399:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "33399:14:14"
                                        }
                                    ],
                                    "name": "sync",
                                    "nameLocation": "33385:4:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5131,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "33389:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5134,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "33414:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "33376:62:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5150,
                                        "nodeType": "Block",
                                        "src": "33716:46:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5147,
                                                        "name": "_exchangeRateCurrent",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5498,
                                                        "src": "33733:20:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint256_$",
                                                            "typeString": "function () returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5148,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "33733:22:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5146,
                                                "id": 5149,
                                                "nodeType": "Return",
                                                "src": "33726:29:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5140,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "33444:196:14",
                                        "text": " @notice Computes the exchange rate between LP tokens and L1Tokens. Used when adding/removing liquidity.\n @return The updated exchange rate between LP tokens and L1 tokens."
                                    },
                                    "functionSelector": "bd6d894d",
                                    "id": 5151,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5143,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5142,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "33683:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "33683:14:14"
                                        }
                                    ],
                                    "name": "exchangeRateCurrent",
                                    "nameLocation": "33654:19:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5141,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "33673:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5146,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5145,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5151,
                                                "src": "33707:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5144,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "33707:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "33706:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "33645:117:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5163,
                                        "nodeType": "Block",
                                        "src": "34032:57:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 5160,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "34080:1:14",
                                                            "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": 5159,
                                                        "name": "_liquidityUtilizationPostRelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5420,
                                                        "src": "34049:30:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5161,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "34049:33:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5158,
                                                "id": 5162,
                                                "nodeType": "Return",
                                                "src": "34042:40:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5152,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "33768:180:14",
                                        "text": " @notice Computes the current liquidity utilization ratio.\n @dev Used in computing realizedLpFeePct off-chain.\n @return The current utilization ratio."
                                    },
                                    "functionSelector": "19e9d894",
                                    "id": 5164,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5155,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5154,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "33999:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "33999:14:14"
                                        }
                                    ],
                                    "name": "liquidityUtilizationCurrent",
                                    "nameLocation": "33962:27:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5153,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "33989:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5158,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5157,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5164,
                                                "src": "34023:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5156,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "34023:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "34022:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "33953:136:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5178,
                                        "nodeType": "Block",
                                        "src": "34538:69:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 5175,
                                                            "name": "relayedAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5167,
                                                            "src": "34586:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5174,
                                                        "name": "_liquidityUtilizationPostRelay",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5420,
                                                        "src": "34555:30:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint256) returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5176,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "34555:45:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5173,
                                                "id": 5177,
                                                "nodeType": "Return",
                                                "src": "34548:52:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5165,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "34095:336:14",
                                        "text": " @notice Computes the liquidity utilization ratio post a relay of known size.\n @dev Used in computing realizedLpFeePct off-chain.\n @param relayedAmount Size of the relayed deposit to factor into the utilization calculation.\n @return The updated utilization ratio accounting for a new `relayedAmount`."
                                    },
                                    "functionSelector": "62822d34",
                                    "id": 5179,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5170,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5169,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "34505:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "34505:14:14"
                                        }
                                    ],
                                    "name": "liquidityUtilizationPostRelay",
                                    "nameLocation": "34445:29:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5168,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5167,
                                                "mutability": "mutable",
                                                "name": "relayedAmount",
                                                "nameLocation": "34483:13:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5179,
                                                "src": "34475:21:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5166,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "34475:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "34474:23:14"
                                    },
                                    "returnParameters": {
                                        "id": 5173,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5172,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5179,
                                                "src": "34529:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5171,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "34529:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "34528:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "34436:171:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5199,
                                        "nodeType": "Block",
                                        "src": "35228:106:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "components": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 5192,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "35277:1:14",
                                                                    "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": 5191,
                                                                "name": "_liquidityUtilizationPostRelay",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5420,
                                                                "src": "35246:30:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint256) returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5193,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "35246:33:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5195,
                                                                    "name": "relayedAmount",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5182,
                                                                    "src": "35312:13:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5194,
                                                                "name": "_liquidityUtilizationPostRelay",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5420,
                                                                "src": "35281:30:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$_t_uint256_$",
                                                                    "typeString": "function (uint256) returns (uint256)"
                                                                }
                                                            },
                                                            "id": 5196,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "35281:45:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "id": 5197,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "35245:82:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                                        "typeString": "tuple(uint256,uint256)"
                                                    }
                                                },
                                                "functionReturnParameters": 5190,
                                                "id": 5198,
                                                "nodeType": "Return",
                                                "src": "35238:89:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5180,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "34613:437:14",
                                        "text": " @notice Return both the current utilization value and liquidity utilization post the relay.\n @dev Used in computing realizedLpFeePct off-chain.\n @param relayedAmount Size of the relayed deposit to factor into the utilization calculation.\n @return utilizationCurrent The current utilization ratio.\n @return utilizationPostRelay The updated utilization ratio accounting for a new `relayedAmount`."
                                    },
                                    "functionSelector": "ed4de3a3",
                                    "id": 5200,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5185,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5184,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "35134:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "35134:14:14"
                                        }
                                    ],
                                    "name": "getLiquidityUtilization",
                                    "nameLocation": "35064:23:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5183,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5182,
                                                "mutability": "mutable",
                                                "name": "relayedAmount",
                                                "nameLocation": "35096:13:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5200,
                                                "src": "35088:21:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5181,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "35088:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "35087:23:14"
                                    },
                                    "returnParameters": {
                                        "id": 5190,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5187,
                                                "mutability": "mutable",
                                                "name": "utilizationCurrent",
                                                "nameLocation": "35174:18:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5200,
                                                "src": "35166:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5186,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "35166:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5189,
                                                "mutability": "mutable",
                                                "name": "utilizationPostRelay",
                                                "nameLocation": "35202:20:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5200,
                                                "src": "35194:28:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5188,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "35194:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "35165:58:14"
                                    },
                                    "scope": 5950,
                                    "src": "35055:279:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5246,
                                        "nodeType": "Block",
                                        "src": "35867:401:14",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5208
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5208,
                                                        "mutability": "mutable",
                                                        "name": "finder",
                                                        "nameLocation": "35893:6:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5246,
                                                        "src": "35877:22:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_FinderInterface_$6193",
                                                            "typeString": "contract FinderInterface"
                                                        },
                                                        "typeName": {
                                                            "id": 5207,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 5206,
                                                                "name": "FinderInterface",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 6193,
                                                                "src": "35877:15:14"
                                                            },
                                                            "referencedDeclaration": 6193,
                                                            "src": "35877:15:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_FinderInterface_$6193",
                                                                "typeString": "contract FinderInterface"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5214,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [],
                                                            "expression": {
                                                                "argumentTypes": [],
                                                                "expression": {
                                                                    "id": 5210,
                                                                    "name": "bridgeAdmin",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3907,
                                                                    "src": "35918:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                                        "typeString": "contract BridgeAdminInterface"
                                                                    }
                                                                },
                                                                "id": 5211,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "finder",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 6062,
                                                                "src": "35918:18:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                                                    "typeString": "function () view external returns (address)"
                                                                }
                                                            },
                                                            "id": 5212,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "35918:20:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 5209,
                                                        "name": "FinderInterface",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 6193,
                                                        "src": "35902:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_FinderInterface_$6193_$",
                                                            "typeString": "type(contract FinderInterface)"
                                                        }
                                                    },
                                                    "id": 5213,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "35902:37:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_FinderInterface_$6193",
                                                        "typeString": "contract FinderInterface"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "35877:62:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5223,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5215,
                                                        "name": "optimisticOracle",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3913,
                                                        "src": "35949:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                            "typeString": "contract SkinnyOptimisticOracleInterface"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5219,
                                                                            "name": "OracleInterfaces",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6168,
                                                                            "src": "36045:16:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_OracleInterfaces_$6168_$",
                                                                                "typeString": "type(library OracleInterfaces)"
                                                                            }
                                                                        },
                                                                        "id": 5220,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "SkinnyOptimisticOracle",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 6167,
                                                                        "src": "36045:39:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 5217,
                                                                        "name": "finder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5208,
                                                                        "src": "36013:6:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_FinderInterface_$6193",
                                                                            "typeString": "contract FinderInterface"
                                                                        }
                                                                    },
                                                                    "id": 5218,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "getImplementationAddress",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 6192,
                                                                    "src": "36013:31:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                                                        "typeString": "function (bytes32) view external returns (address)"
                                                                    }
                                                                },
                                                                "id": 5221,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "36013:72:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 5216,
                                                            "name": "SkinnyOptimisticOracleInterface",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6650,
                                                            "src": "35968:31:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_SkinnyOptimisticOracleInterface_$6650_$",
                                                                "typeString": "type(contract SkinnyOptimisticOracleInterface)"
                                                            }
                                                        },
                                                        "id": 5222,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "35968:127:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                            "typeString": "contract SkinnyOptimisticOracleInterface"
                                                        }
                                                    },
                                                    "src": "35949:146:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                        "typeString": "contract SkinnyOptimisticOracleInterface"
                                                    }
                                                },
                                                "id": 5224,
                                                "nodeType": "ExpressionStatement",
                                                "src": "35949:146:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5233,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5225,
                                                        "name": "store",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3910,
                                                        "src": "36106:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_StoreInterface_$6695",
                                                            "typeString": "contract StoreInterface"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "expression": {
                                                                            "id": 5229,
                                                                            "name": "OracleInterfaces",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 6168,
                                                                            "src": "36161:16:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_OracleInterfaces_$6168_$",
                                                                                "typeString": "type(library OracleInterfaces)"
                                                                            }
                                                                        },
                                                                        "id": 5230,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "memberName": "Store",
                                                                        "nodeType": "MemberAccess",
                                                                        "referencedDeclaration": 6146,
                                                                        "src": "36161:22:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_bytes32",
                                                                            "typeString": "bytes32"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 5227,
                                                                        "name": "finder",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5208,
                                                                        "src": "36129:6:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_FinderInterface_$6193",
                                                                            "typeString": "contract FinderInterface"
                                                                        }
                                                                    },
                                                                    "id": 5228,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "getImplementationAddress",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 6192,
                                                                    "src": "36129:31:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                                                        "typeString": "function (bytes32) view external returns (address)"
                                                                    }
                                                                },
                                                                "id": 5231,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "36129:55:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 5226,
                                                            "name": "StoreInterface",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6695,
                                                            "src": "36114:14:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_StoreInterface_$6695_$",
                                                                "typeString": "type(contract StoreInterface)"
                                                            }
                                                        },
                                                        "id": 5232,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "36114:71:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_StoreInterface_$6695",
                                                            "typeString": "contract StoreInterface"
                                                        }
                                                    },
                                                    "src": "36106:79:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_StoreInterface_$6695",
                                                        "typeString": "contract StoreInterface"
                                                    }
                                                },
                                                "id": 5234,
                                                "nodeType": "ExpressionStatement",
                                                "src": "36106:79:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5244,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5235,
                                                        "name": "l1TokenFinalFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3900,
                                                        "src": "36195:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5240,
                                                                            "name": "l1Token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3877,
                                                                            "src": "36243:7:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        ],
                                                                        "id": 5239,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "36235:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5238,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "36235:7:14",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5241,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "36235:16:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5236,
                                                                    "name": "store",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3910,
                                                                    "src": "36213:5:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_StoreInterface_$6695",
                                                                        "typeString": "contract StoreInterface"
                                                                    }
                                                                },
                                                                "id": 5237,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "memberName": "computeFinalFee",
                                                                "nodeType": "MemberAccess",
                                                                "referencedDeclaration": 6694,
                                                                "src": "36213:21:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_struct$_Unsigned_$1955_memory_ptr_$",
                                                                    "typeString": "function (address) view external returns (struct FixedPoint.Unsigned memory)"
                                                                }
                                                            },
                                                            "id": 5242,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "36213:39:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                                "typeString": "struct FixedPoint.Unsigned memory"
                                                            }
                                                        },
                                                        "id": 5243,
                                                        "isConstant": false,
                                                        "isLValue": true,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "rawValue",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1954,
                                                        "src": "36213:48:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "36195:66:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5245,
                                                "nodeType": "ExpressionStatement",
                                                "src": "36195:66:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5201,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "35340:466:14",
                                        "text": " @notice Updates the address stored in this contract for the OptimisticOracle and the Store to the latest versions\n set in the the Finder. Also pull finalFee Store these as local variables to make relay methods gas efficient.\n @dev There is no risk of leaving this function public for anyone to call as in all cases we want the addresses\n in this contract to map to the latest version in the Finder and store the latest final fee."
                                    },
                                    "functionSelector": "b5351ee2",
                                    "id": 5247,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5204,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5203,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "35852:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "35852:14:14"
                                        }
                                    ],
                                    "name": "syncUmaEcosystemParams",
                                    "nameLocation": "35820:22:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5202,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "35842:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5205,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "35867:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "35811:457:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5271,
                                        "nodeType": "Block",
                                        "src": "36782:186:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5257,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5253,
                                                        "name": "proposerBondPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3896,
                                                        "src": "36792:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "id": 5254,
                                                                "name": "bridgeAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3907,
                                                                "src": "36810:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                                    "typeString": "contract BridgeAdminInterface"
                                                                }
                                                            },
                                                            "id": 5255,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "proposerBondPct",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 6103,
                                                            "src": "36810:27:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$",
                                                                "typeString": "function () view external returns (uint64)"
                                                            }
                                                        },
                                                        "id": 5256,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "36810:29:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "36792:47:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 5258,
                                                "nodeType": "ExpressionStatement",
                                                "src": "36792:47:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5263,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5259,
                                                        "name": "optimisticOracleLiveness",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3898,
                                                        "src": "36849:24:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "id": 5260,
                                                                "name": "bridgeAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3907,
                                                                "src": "36876:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                                    "typeString": "contract BridgeAdminInterface"
                                                                }
                                                            },
                                                            "id": 5261,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "optimisticOracleLiveness",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 6098,
                                                            "src": "36876:36:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_uint32_$",
                                                                "typeString": "function () view external returns (uint32)"
                                                            }
                                                        },
                                                        "id": 5262,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "36876:38:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "src": "36849:65:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "id": 5264,
                                                "nodeType": "ExpressionStatement",
                                                "src": "36849:65:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5269,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5265,
                                                        "name": "identifier",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3915,
                                                        "src": "36924:10:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "expression": {
                                                                "id": 5266,
                                                                "name": "bridgeAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3907,
                                                                "src": "36937:11:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                                    "typeString": "contract BridgeAdminInterface"
                                                                }
                                                            },
                                                            "id": 5267,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "identifier",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 6108,
                                                            "src": "36937:22:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
                                                                "typeString": "function () view external returns (bytes32)"
                                                            }
                                                        },
                                                        "id": 5268,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "36937:24:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes32",
                                                            "typeString": "bytes32"
                                                        }
                                                    },
                                                    "src": "36924:37:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "id": 5270,
                                                "nodeType": "ExpressionStatement",
                                                "src": "36924:37:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5248,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "36274:444:14",
                                        "text": " @notice Updates the values of stored constants for the proposerBondPct, optimisticOracleLiveness and identifier\n to that set in the bridge Admin. We store these as local variables to make the relay methods more gas efficient.\n @dev There is no risk of leaving this function public for anyone to call as in all cases we want these values\n in this contract to map to the latest version set in the BridgeAdmin."
                                    },
                                    "functionSelector": "3cc400b3",
                                    "id": 5272,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5251,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5250,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "36767:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "36767:14:14"
                                        }
                                    ],
                                    "name": "syncWithBridgeAdminParams",
                                    "nameLocation": "36732:25:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5249,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "36757:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5252,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "36782:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "36723:245:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        6123
                                    ],
                                    "body": {
                                        "id": 5295,
                                        "nodeType": "Block",
                                        "src": "37398:126:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5287,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5283,
                                                        "name": "bridgeAdmin",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3907,
                                                        "src": "37408:11:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                            "typeString": "contract BridgeAdminInterface"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 5285,
                                                                "name": "_newAdmin",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5275,
                                                                "src": "37443:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 5284,
                                                            "name": "BridgeAdminInterface",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6109,
                                                            "src": "37422:20:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_BridgeAdminInterface_$6109_$",
                                                                "typeString": "type(contract BridgeAdminInterface)"
                                                            }
                                                        },
                                                        "id": 5286,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "37422:31:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                            "typeString": "contract BridgeAdminInterface"
                                                        }
                                                    },
                                                    "src": "37408:45:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_BridgeAdminInterface_$6109",
                                                        "typeString": "contract BridgeAdminInterface"
                                                    }
                                                },
                                                "id": 5288,
                                                "nodeType": "ExpressionStatement",
                                                "src": "37408:45:14"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 5290,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "37495:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 5291,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "37495:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5292,
                                                            "name": "_newAdmin",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5275,
                                                            "src": "37507:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 5289,
                                                        "name": "BridgePoolAdminTransferred",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4028,
                                                        "src": "37468:26:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                                                            "typeString": "function (address,address)"
                                                        }
                                                    },
                                                    "id": 5293,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "37468:49:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5294,
                                                "nodeType": "EmitStatement",
                                                "src": "37463:54:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5273,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "37102:202:14",
                                        "text": " @notice Enable the current bridge admin to transfer admin to to a new address.\n @dev Caller must be BridgeAdmin contract.\n @param _newAdmin Admin address of the new admin."
                                    },
                                    "functionSelector": "8f283970",
                                    "id": 5296,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5279,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5278,
                                                "name": "onlyBridgeAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 4051,
                                                "src": "37365:15:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "37365:17:14"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 5281,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5280,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "37383:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "37383:14:14"
                                        }
                                    ],
                                    "name": "changeAdmin",
                                    "nameLocation": "37318:11:14",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 5277,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "37356:8:14"
                                    },
                                    "parameters": {
                                        "id": 5276,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5275,
                                                "mutability": "mutable",
                                                "name": "_newAdmin",
                                                "nameLocation": "37338:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5296,
                                                "src": "37330:17:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5274,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "37330:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "37329:19:14"
                                    },
                                    "returnParameters": {
                                        "id": 5282,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "37398:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "37309:215:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        6128
                                    ],
                                    "body": {
                                        "id": 5315,
                                        "nodeType": "Block",
                                        "src": "37937:107:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5309,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5307,
                                                        "name": "lpFeeRatePerSecond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3892,
                                                        "src": "37947:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 5308,
                                                        "name": "_newLpFeeRatePerSecond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5299,
                                                        "src": "37968:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint64",
                                                            "typeString": "uint64"
                                                        }
                                                    },
                                                    "src": "37947:43:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "id": 5310,
                                                "nodeType": "ExpressionStatement",
                                                "src": "37947:43:14"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 5312,
                                                            "name": "lpFeeRatePerSecond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3892,
                                                            "src": "38018:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        ],
                                                        "id": 5311,
                                                        "name": "LpFeeRateSet",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4036,
                                                        "src": "38005:12:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$",
                                                            "typeString": "function (uint64)"
                                                        }
                                                    },
                                                    "id": 5313,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "38005:32:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5314,
                                                "nodeType": "EmitStatement",
                                                "src": "38000:37:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5297,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "37530:291:14",
                                        "text": " @notice Enable the bridge admin to change the decay rate at which LP shares accumulate fees. The higher this\n value, the faster LP shares realize pending fees.\n @dev Caller must be BridgeAdmin contract.\n @param _newLpFeeRatePerSecond The new rate to set."
                                    },
                                    "functionSelector": "27f224ca",
                                    "id": 5316,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5303,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5302,
                                                "name": "onlyBridgeAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 4051,
                                                "src": "37904:15:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "37904:17:14"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 5305,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5304,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "37922:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "37922:14:14"
                                        }
                                    ],
                                    "name": "setLpFeeRatePerSecond",
                                    "nameLocation": "37835:21:14",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 5301,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "37895:8:14"
                                    },
                                    "parameters": {
                                        "id": 5300,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5299,
                                                "mutability": "mutable",
                                                "name": "_newLpFeeRatePerSecond",
                                                "nameLocation": "37864:22:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5316,
                                                "src": "37857:29:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 5298,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "37857:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "37856:31:14"
                                    },
                                    "returnParameters": {
                                        "id": 5306,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "37937:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "37826:218:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        6133
                                    ],
                                    "body": {
                                        "id": 5335,
                                        "nodeType": "Block",
                                        "src": "38486:94:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5329,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5327,
                                                        "name": "relaysEnabled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3890,
                                                        "src": "38496:13:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "id": 5328,
                                                        "name": "_relaysEnabled",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5319,
                                                        "src": "38512:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "src": "38496:30:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5330,
                                                "nodeType": "ExpressionStatement",
                                                "src": "38496:30:14"
                                            },
                                            {
                                                "eventCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 5332,
                                                            "name": "_relaysEnabled",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5319,
                                                            "src": "38558:14:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        ],
                                                        "id": 5331,
                                                        "name": "RelaysEnabledSet",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 4032,
                                                        "src": "38541:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$",
                                                            "typeString": "function (bool)"
                                                        }
                                                    },
                                                    "id": 5333,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "38541:32:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5334,
                                                "nodeType": "EmitStatement",
                                                "src": "38536:37:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5317,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "38050:335:14",
                                        "text": " @notice Enable the bridge admin to enable/disable relays for this pool. Acts as a pause. Only effects\n relayDeposit and relayAndSpeedUp methods. ALl other contract logic remains functional after a pause.\n @dev Caller must be BridgeAdmin contract.\n @param _relaysEnabled The new relaysEnabled state."
                                    },
                                    "functionSelector": "08ed5b14",
                                    "id": 5336,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5323,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5322,
                                                "name": "onlyBridgeAdmin",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 4051,
                                                "src": "38453:15:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "38453:17:14"
                                        },
                                        {
                                            "arguments": [],
                                            "id": 5325,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5324,
                                                "name": "nonReentrant",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3596,
                                                "src": "38471:12:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "38471:14:14"
                                        }
                                    ],
                                    "name": "setRelaysEnabled",
                                    "nameLocation": "38399:16:14",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 5321,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "38444:8:14"
                                    },
                                    "parameters": {
                                        "id": 5320,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5319,
                                                "mutability": "mutable",
                                                "name": "_relaysEnabled",
                                                "nameLocation": "38421:14:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5336,
                                                "src": "38416:19:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 5318,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "38416:4:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "38415:21:14"
                                    },
                                    "returnParameters": {
                                        "id": 5326,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "38486:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "38390:190:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5347,
                                        "nodeType": "Block",
                                        "src": "38954:45:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5344,
                                                        "name": "_getAccumulatedFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5625,
                                                        "src": "38971:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                            "typeString": "function () view returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5345,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "38971:21:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5343,
                                                "id": 5346,
                                                "nodeType": "Return",
                                                "src": "38964:28:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5337,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "38714:156:14",
                                        "text": " @notice Computes the current amount of unallocated fees that have accumulated from the previous time this the\n contract was called."
                                    },
                                    "functionSelector": "5df45a37",
                                    "id": 5348,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5340,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5339,
                                                "name": "nonReentrantView",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3604,
                                                "src": "38917:16:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "38917:18:14"
                                        }
                                    ],
                                    "name": "getAccumulatedFees",
                                    "nameLocation": "38884:18:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5338,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "38902:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5343,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5342,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5348,
                                                "src": "38945:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5341,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "38945:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "38944:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "38875:124:14",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5369,
                                        "nodeType": "Block",
                                        "src": "39818:85:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5364,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5352,
                                                                    "src": "39872:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                {
                                                                    "id": 5365,
                                                                    "name": "relayData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5355,
                                                                    "src": "39885:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                        "typeString": "struct BridgePool.RelayData memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                        "typeString": "struct BridgePool.RelayData memory"
                                                                    }
                                                                ],
                                                                "id": 5363,
                                                                "name": "_getRelayHash",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5540,
                                                                "src": "39858:13:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_struct$_DepositData_$3936_memory_ptr_$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                                    "typeString": "function (struct BridgePool.DepositData memory,struct BridgePool.RelayData memory) view returns (bytes32)"
                                                                }
                                                            },
                                                            "id": 5366,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "39858:37:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "id": 5362,
                                                        "name": "_getRelayAncillaryData",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5513,
                                                        "src": "39835:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes32) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 5367,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "39835:61:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5361,
                                                "id": 5368,
                                                "nodeType": "Return",
                                                "src": "39828:68:14"
                                            }
                                        ]
                                    },
                                    "documentation": {
                                        "id": 5349,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "39005:627:14",
                                        "text": " @notice Returns ancillary data containing all relevant Relay data that voters can format into UTF8 and use to\n determine if the relay is valid.\n @dev Helpful method to test that ancillary data is constructed properly. We should consider removing if we don't\n anticipate off-chain bots or users to call this method.\n @param depositData Contains L2 deposit information used by off-chain validators to validate relay.\n @param relayData Contains relay information used by off-chain validators to validate relay.\n @return bytes New ancillary data that can be decoded into UTF8."
                                    },
                                    "functionSelector": "1bf71c38",
                                    "id": 5370,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [
                                        {
                                            "arguments": [],
                                            "id": 5358,
                                            "kind": "modifierInvocation",
                                            "modifierName": {
                                                "id": 5357,
                                                "name": "nonReentrantView",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3604,
                                                "src": "39764:16:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "39764:18:14"
                                        }
                                    ],
                                    "name": "getRelayAncillaryData",
                                    "nameLocation": "39646:21:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5356,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5352,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "39687:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5370,
                                                "src": "39668:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 5351,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5350,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "39668:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "39668:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5355,
                                                "mutability": "mutable",
                                                "name": "relayData",
                                                "nameLocation": "39717:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5370,
                                                "src": "39700:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 5354,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5353,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "39700:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "39700:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "39667:60:14"
                                    },
                                    "returnParameters": {
                                        "id": 5361,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5360,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5370,
                                                "src": "39800:12:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 5359,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "39800:5:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "39799:14:14"
                                    },
                                    "scope": 5950,
                                    "src": "39637:266:14",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "body": {
                                        "id": 5419,
                                        "nodeType": "Block",
                                        "src": "40133:1223:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5377,
                                                        "name": "_sync",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5454,
                                                        "src": "40143:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 5378,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "40143:7:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5379,
                                                "nodeType": "ExpressionStatement",
                                                "src": "40143:7:14"
                                            },
                                            {
                                                "assignments": [
                                                    5381
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5381,
                                                        "mutability": "mutable",
                                                        "name": "flooredUtilizedReserves",
                                                        "nameLocation": "40883:23:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5419,
                                                        "src": "40875:31:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5380,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "40875:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5391,
                                                "initialValue": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5384,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5382,
                                                            "name": "utilizedReserves",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3883,
                                                            "src": "40909:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": ">",
                                                        "rightExpression": {
                                                            "hexValue": "30",
                                                            "id": 5383,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "40928:1:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        "src": "40909:20:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "hexValue": "30",
                                                        "id": 5389,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "40960:1:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "id": 5390,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "40909:52:14",
                                                    "trueExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 5387,
                                                                "name": "utilizedReserves",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3883,
                                                                "src": "40940:16:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            ],
                                                            "id": 5386,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "40932:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                                "typeString": "type(uint256)"
                                                            },
                                                            "typeName": {
                                                                "id": 5385,
                                                                "name": "uint256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "40932:7:14",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 5388,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "40932:25:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "40875:86:14"
                                            },
                                            {
                                                "assignments": [
                                                    5393
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5393,
                                                        "mutability": "mutable",
                                                        "name": "numerator",
                                                        "nameLocation": "40979:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5419,
                                                        "src": "40971:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5392,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "40971:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5399,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5398,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 5396,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5394,
                                                            "name": "relayedAmount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5372,
                                                            "src": "40991:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                            "id": 5395,
                                                            "name": "pendingReserves",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3885,
                                                            "src": "41007:15:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "40991:31:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 5397,
                                                        "name": "flooredUtilizedReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5381,
                                                        "src": "41025:23:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "40991:57:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "40971:77:14"
                                            },
                                            {
                                                "assignments": [
                                                    5401
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5401,
                                                        "mutability": "mutable",
                                                        "name": "denominator",
                                                        "nameLocation": "41066:11:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5419,
                                                        "src": "41058:19:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5400,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "41058:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5405,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5404,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5402,
                                                        "name": "liquidReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3881,
                                                        "src": "41080:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 5403,
                                                        "name": "flooredUtilizedReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5381,
                                                        "src": "41097:23:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "41080:40:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "41058:62:14"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5408,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5406,
                                                        "name": "denominator",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5401,
                                                        "src": "41209:11:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 5407,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "41224:1:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "41209:16:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5411,
                                                "nodeType": "IfStatement",
                                                "src": "41205:33:14",
                                                "trueBody": {
                                                    "expression": {
                                                        "hexValue": "31653138",
                                                        "id": 5409,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "41234:4:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                            "typeString": "int_const 1000000000000000000"
                                                        },
                                                        "value": "1e18"
                                                    },
                                                    "functionReturnParameters": 5376,
                                                    "id": 5410,
                                                    "nodeType": "Return",
                                                    "src": "41227:11:14"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5417,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 5414,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 5412,
                                                                    "name": "numerator",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5393,
                                                                    "src": "41318:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "*",
                                                                "rightExpression": {
                                                                    "hexValue": "31653138",
                                                                    "id": 5413,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "41330:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                                        "typeString": "int_const 1000000000000000000"
                                                                    },
                                                                    "value": "1e18"
                                                                },
                                                                "src": "41318:16:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 5415,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "41317:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "id": 5416,
                                                        "name": "denominator",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5401,
                                                        "src": "41338:11:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "41317:32:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5376,
                                                "id": 5418,
                                                "nodeType": "Return",
                                                "src": "41310:39:14"
                                            }
                                        ]
                                    },
                                    "id": 5420,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_liquidityUtilizationPostRelay",
                                    "nameLocation": "40052:30:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5373,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5372,
                                                "mutability": "mutable",
                                                "name": "relayedAmount",
                                                "nameLocation": "40091:13:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5420,
                                                "src": "40083:21:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5371,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "40083:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "40082:23:14"
                                    },
                                    "returnParameters": {
                                        "id": 5376,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5375,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5420,
                                                "src": "40124:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5374,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "40124:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "40123:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "40043:1313:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5453,
                                        "nodeType": "Block",
                                        "src": "41388:771:14",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5424
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5424,
                                                        "mutability": "mutable",
                                                        "name": "l1TokenBalance",
                                                        "nameLocation": "41612:14:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5453,
                                                        "src": "41604:22:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5423,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "41604:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5434,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5433,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5429,
                                                                        "name": "this",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": -28,
                                                                        "src": "41655:4:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                            "typeString": "contract BridgePool"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                            "typeString": "contract BridgePool"
                                                                        }
                                                                    ],
                                                                    "id": 5428,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                    "src": "41647:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                        "typeString": "type(address)"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5427,
                                                                        "name": "address",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "41647:7:14",
                                                                        "typeDescriptions": {}
                                                                    }
                                                                },
                                                                "id": 5430,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "typeConversion",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "41647:13:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "id": 5425,
                                                                "name": "l1Token",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3877,
                                                                "src": "41629:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                    "typeString": "contract IERC20"
                                                                }
                                                            },
                                                            "id": 5426,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "balanceOf",
                                                            "nodeType": "MemberAccess",
                                                            "referencedDeclaration": 523,
                                                            "src": "41629:17:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                                                "typeString": "function (address) view external returns (uint256)"
                                                            }
                                                        },
                                                        "id": 5431,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "41629:32:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "id": 5432,
                                                        "name": "bonds",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3904,
                                                        "src": "41664:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "41629:40:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "41604:65:14"
                                            },
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5437,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5435,
                                                        "name": "l1TokenBalance",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5424,
                                                        "src": "41683:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": ">",
                                                    "rightExpression": {
                                                        "id": 5436,
                                                        "name": "liquidReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3881,
                                                        "src": "41700:14:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "41683:31:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5452,
                                                "nodeType": "IfStatement",
                                                "src": "41679:474:14",
                                                "trueBody": {
                                                    "id": 5451,
                                                    "nodeType": "Block",
                                                    "src": "41716:437:14",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "id": 5445,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 5438,
                                                                    "name": "utilizedReserves",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3883,
                                                                    "src": "42038:16:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "-=",
                                                                "rightHandSide": {
                                                                    "arguments": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 5443,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "id": 5441,
                                                                                "name": "l1TokenBalance",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5424,
                                                                                "src": "42065:14:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "-",
                                                                            "rightExpression": {
                                                                                "id": 5442,
                                                                                "name": "liquidReserves",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3881,
                                                                                "src": "42082:14:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "src": "42065:31:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        ],
                                                                        "id": 5440,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "42058:6:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_int256_$",
                                                                            "typeString": "type(int256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5439,
                                                                            "name": "int256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "42058:6:14",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5444,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "42058:39:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_int256",
                                                                        "typeString": "int256"
                                                                    }
                                                                },
                                                                "src": "42038:59:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_int256",
                                                                    "typeString": "int256"
                                                                }
                                                            },
                                                            "id": 5446,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "42038:59:14"
                                                        },
                                                        {
                                                            "expression": {
                                                                "id": 5449,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftHandSide": {
                                                                    "id": 5447,
                                                                    "name": "liquidReserves",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3881,
                                                                    "src": "42111:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "Assignment",
                                                                "operator": "=",
                                                                "rightHandSide": {
                                                                    "id": 5448,
                                                                    "name": "l1TokenBalance",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5424,
                                                                    "src": "42128:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "42111:31:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "id": 5450,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "42111:31:14"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "id": 5454,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_sync",
                                    "nameLocation": "41371:5:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5421,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "41376:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5422,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "41388:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "41362:797:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5497,
                                        "nodeType": "Block",
                                        "src": "42224:1012:14",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5462,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 5459,
                                                            "name": "totalSupply",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 84,
                                                            "src": "42238:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                "typeString": "function () view returns (uint256)"
                                                            }
                                                        },
                                                        "id": 5460,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "42238:13:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                        "hexValue": "30",
                                                        "id": 5461,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "42255:1:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_0_by_1",
                                                            "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                    },
                                                    "src": "42238:18:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "id": 5465,
                                                "nodeType": "IfStatement",
                                                "src": "42234:35:14",
                                                "trueBody": {
                                                    "expression": {
                                                        "hexValue": "31653138",
                                                        "id": 5463,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "42265:4:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                            "typeString": "int_const 1000000000000000000"
                                                        },
                                                        "value": "1e18"
                                                    },
                                                    "functionReturnParameters": 5458,
                                                    "id": 5464,
                                                    "nodeType": "Return",
                                                    "src": "42258:11:14"
                                                }
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5466,
                                                        "name": "_updateAccumulatedLpFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5648,
                                                        "src": "42419:24:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 5467,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "42419:26:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5468,
                                                "nodeType": "ExpressionStatement",
                                                "src": "42419:26:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5469,
                                                        "name": "_sync",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5454,
                                                        "src": "42531:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                                                            "typeString": "function ()"
                                                        }
                                                    },
                                                    "id": 5470,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "42531:7:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5471,
                                                "nodeType": "ExpressionStatement",
                                                "src": "42531:7:14"
                                            },
                                            {
                                                "assignments": [
                                                    5473
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5473,
                                                        "mutability": "mutable",
                                                        "name": "numerator",
                                                        "nameLocation": "43086:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5497,
                                                        "src": "43079:16:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "typeName": {
                                                            "id": 5472,
                                                            "name": "int256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "43079:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5485,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    },
                                                    "id": 5484,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        },
                                                        "id": 5479,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 5476,
                                                                    "name": "liquidReserves",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3881,
                                                                    "src": "43105:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5475,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "43098:6:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5474,
                                                                    "name": "int256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "43098:6:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5477,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "43098:22:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "+",
                                                        "rightExpression": {
                                                            "id": 5478,
                                                            "name": "utilizedReserves",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3883,
                                                            "src": "43123:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        "src": "43098:41:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "-",
                                                    "rightExpression": {
                                                        "arguments": [
                                                            {
                                                                "id": 5482,
                                                                "name": "undistributedLpFees",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3902,
                                                                "src": "43149:19:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 5481,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "43142:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_int256_$",
                                                                "typeString": "type(int256)"
                                                            },
                                                            "typeName": {
                                                                "id": 5480,
                                                                "name": "int256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "43142:6:14",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 5483,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "43142:27:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "43098:71:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "43079:90:14"
                                            },
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5495,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 5491,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5488,
                                                                            "name": "numerator",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5473,
                                                                            "src": "43195:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_int256",
                                                                                "typeString": "int256"
                                                                            }
                                                                        ],
                                                                        "id": 5487,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "43187:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_uint256_$",
                                                                            "typeString": "type(uint256)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5486,
                                                                            "name": "uint256",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "43187:7:14",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5489,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "43187:18:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "*",
                                                                "rightExpression": {
                                                                    "hexValue": "31653138",
                                                                    "id": 5490,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "43208:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                                        "typeString": "int_const 1000000000000000000"
                                                                    },
                                                                    "value": "1e18"
                                                                },
                                                                "src": "43187:25:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 5492,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "43186:27:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "arguments": [],
                                                        "expression": {
                                                            "argumentTypes": [],
                                                            "id": 5493,
                                                            "name": "totalSupply",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 84,
                                                            "src": "43216:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                "typeString": "function () view returns (uint256)"
                                                            }
                                                        },
                                                        "id": 5494,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "43216:13:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "43186:43:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5458,
                                                "id": 5496,
                                                "nodeType": "Return",
                                                "src": "43179:50:14"
                                            }
                                        ]
                                    },
                                    "id": 5498,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_exchangeRateCurrent",
                                    "nameLocation": "42174:20:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5455,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "42194:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5458,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5457,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5498,
                                                "src": "42215:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5456,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "42215:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "42214:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "42165:1071:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5512,
                                        "nodeType": "Block",
                                        "src": "43425:87:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "",
                                                            "id": 5507,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "43478:2:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            },
                                                            "value": ""
                                                        },
                                                        {
                                                            "hexValue": "72656c617948617368",
                                                            "id": 5508,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "43482:11:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_871cddd0e2b555990f34d0d618c44a5d40109b0f761490c14fa284b20782327f",
                                                                "typeString": "literal_string \"relayHash\""
                                                            },
                                                            "value": "relayHash"
                                                        },
                                                        {
                                                            "id": 5509,
                                                            "name": "relayHash",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5500,
                                                            "src": "43495:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                "typeString": "literal_string \"\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_871cddd0e2b555990f34d0d618c44a5d40109b0f761490c14fa284b20782327f",
                                                                "typeString": "literal_string \"relayHash\""
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5505,
                                                            "name": "AncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 1936,
                                                            "src": "43442:13:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_AncillaryData_$1936_$",
                                                                "typeString": "type(library AncillaryData)"
                                                            }
                                                        },
                                                        "id": 5506,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "appendKeyValueBytes32",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 1846,
                                                        "src": "43442:35:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_bytes_memory_ptr_$",
                                                            "typeString": "function (bytes memory,bytes memory,bytes32) pure returns (bytes memory)"
                                                        }
                                                    },
                                                    "id": 5510,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "43442:63:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_memory_ptr",
                                                        "typeString": "bytes memory"
                                                    }
                                                },
                                                "functionReturnParameters": 5504,
                                                "id": 5511,
                                                "nodeType": "Return",
                                                "src": "43435:70:14"
                                            }
                                        ]
                                    },
                                    "id": 5513,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getRelayAncillaryData",
                                    "nameLocation": "43347:22:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5501,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5500,
                                                "mutability": "mutable",
                                                "name": "relayHash",
                                                "nameLocation": "43378:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5513,
                                                "src": "43370:17:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5499,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "43370:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "43369:19:14"
                                    },
                                    "returnParameters": {
                                        "id": 5504,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5503,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5513,
                                                "src": "43411:12:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 5502,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "43411:5:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "43410:14:14"
                                    },
                                    "scope": 5950,
                                    "src": "43338:174:14",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5539,
                                        "nodeType": "Block",
                                        "src": "43740:123:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5527,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5516,
                                                                    "src": "43778:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 5528,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5519,
                                                                        "src": "43791:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 5529,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "relayId",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3943,
                                                                    "src": "43791:17:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint32",
                                                                        "typeString": "uint32"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 5530,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5519,
                                                                        "src": "43810:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 5531,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "realizedLpFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3945,
                                                                    "src": "43810:26:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5534,
                                                                            "name": "l1Token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3877,
                                                                            "src": "43846:7:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        ],
                                                                        "id": 5533,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "43838:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5532,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "43838:7:14",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5535,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "43838:16:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint32",
                                                                        "typeString": "uint32"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5525,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "43767:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 5526,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encode",
                                                                "nodeType": "MemberAccess",
                                                                "src": "43767:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function () pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 5536,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "43767:88:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 5524,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -8,
                                                        "src": "43757:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 5537,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "43757:99:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "functionReturnParameters": 5523,
                                                "id": 5538,
                                                "nodeType": "Return",
                                                "src": "43750:106:14"
                                            }
                                        ]
                                    },
                                    "id": 5540,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getRelayHash",
                                    "nameLocation": "43635:13:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5520,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5516,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "43668:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5540,
                                                "src": "43649:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 5515,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5514,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "43649:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "43649:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5519,
                                                "mutability": "mutable",
                                                "name": "relayData",
                                                "nameLocation": "43698:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5540,
                                                "src": "43681:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 5518,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5517,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "43681:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "43681:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "43648:60:14"
                                    },
                                    "returnParameters": {
                                        "id": 5523,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5522,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5540,
                                                "src": "43731:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5521,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "43731:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "43730:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "43626:237:14",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5555,
                                        "nodeType": "Block",
                                        "src": "44044:56:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5551,
                                                                    "name": "relayData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5543,
                                                                    "src": "44082:9:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                        "typeString": "struct BridgePool.RelayData memory"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                        "typeString": "struct BridgePool.RelayData memory"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5549,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "44071:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 5550,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encode",
                                                                "nodeType": "MemberAccess",
                                                                "src": "44071:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function () pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 5552,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "44071:21:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 5548,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -8,
                                                        "src": "44061:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 5553,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "44061:32:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "functionReturnParameters": 5547,
                                                "id": 5554,
                                                "nodeType": "Return",
                                                "src": "44054:39:14"
                                            }
                                        ]
                                    },
                                    "id": 5556,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getRelayDataHash",
                                    "nameLocation": "43967:17:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5544,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5543,
                                                "mutability": "mutable",
                                                "name": "relayData",
                                                "nameLocation": "44002:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5556,
                                                "src": "43985:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 5542,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5541,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "43985:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "43985:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "43984:28:14"
                                    },
                                    "returnParameters": {
                                        "id": 5547,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5546,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5556,
                                                "src": "44035:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5545,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "44035:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "44034:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "43958:142:14",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5575,
                                        "nodeType": "Block",
                                        "src": "44292:179:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            "id": 5571,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "baseExpression": {
                                                                    "id": 5565,
                                                                    "name": "relays",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3956,
                                                                    "src": "44323:6:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_bytes32_$",
                                                                        "typeString": "mapping(bytes32 => bytes32)"
                                                                    }
                                                                },
                                                                "id": 5567,
                                                                "indexExpression": {
                                                                    "id": 5566,
                                                                    "name": "depositHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5558,
                                                                    "src": "44330:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                "isConstant": false,
                                                                "isLValue": true,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "nodeType": "IndexAccess",
                                                                "src": "44323:19:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5569,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5561,
                                                                        "src": "44364:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    ],
                                                                    "id": 5568,
                                                                    "name": "_getRelayDataHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5556,
                                                                    "src": "44346:17:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_RelayData_$3952_memory_ptr_$returns$_t_bytes32_$",
                                                                        "typeString": "function (struct BridgePool.RelayData memory) pure returns (bytes32)"
                                                                    }
                                                                },
                                                                "id": 5570,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "44346:28:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes32",
                                                                    "typeString": "bytes32"
                                                                }
                                                            },
                                                            "src": "44323:51:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "4861736865642072656c617920706172616d7320646f206e6f74206d61746368206578697374696e672072656c6179206861736820666f72206465706f736974",
                                                            "id": 5572,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "string",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "44388:66:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_stringliteral_140eb91724df70a0cee818ba517cecd0d75a058e9680b55981a9187bd7c49aba",
                                                                "typeString": "literal_string \"Hashed relay params do not match existing relay hash for deposit\""
                                                            },
                                                            "value": "Hashed relay params do not match existing relay hash for deposit"
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_stringliteral_140eb91724df70a0cee818ba517cecd0d75a058e9680b55981a9187bd7c49aba",
                                                                "typeString": "literal_string \"Hashed relay params do not match existing relay hash for deposit\""
                                                            }
                                                        ],
                                                        "id": 5564,
                                                        "name": "require",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [
                                                            -18,
                                                            -18
                                                        ],
                                                        "referencedDeclaration": -18,
                                                        "src": "44302:7:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                            "typeString": "function (bool,string memory) pure"
                                                        }
                                                    },
                                                    "id": 5573,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "44302:162:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5574,
                                                "nodeType": "ExpressionStatement",
                                                "src": "44302:162:14"
                                            }
                                        ]
                                    },
                                    "id": 5576,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_validateRelayDataHash",
                                    "nameLocation": "44207:22:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5562,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5558,
                                                "mutability": "mutable",
                                                "name": "depositHash",
                                                "nameLocation": "44238:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5576,
                                                "src": "44230:19:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5557,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "44230:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5561,
                                                "mutability": "mutable",
                                                "name": "relayData",
                                                "nameLocation": "44268:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5576,
                                                "src": "44251:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 5560,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5559,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "44251:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "44251:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "44229:49:14"
                                    },
                                    "returnParameters": {
                                        "id": 5563,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "44292:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "44198:273:14",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5595,
                                        "nodeType": "Block",
                                        "src": "44703:423:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5589,
                                                                    "name": "depositHash",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5578,
                                                                    "src": "45078:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    }
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "id": 5590,
                                                                        "name": "relayData",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5581,
                                                                        "src": "45091:9:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                                            "typeString": "struct BridgePool.RelayData memory"
                                                                        }
                                                                    },
                                                                    "id": 5591,
                                                                    "isConstant": false,
                                                                    "isLValue": true,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "realizedLpFeePct",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3945,
                                                                    "src": "45091:26:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_bytes32",
                                                                        "typeString": "bytes32"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5587,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "45067:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 5588,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encode",
                                                                "nodeType": "MemberAccess",
                                                                "src": "45067:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function () pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 5592,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "45067:51:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 5586,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -8,
                                                        "src": "45057:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 5593,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "45057:62:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "functionReturnParameters": 5585,
                                                "id": 5594,
                                                "nodeType": "Return",
                                                "src": "45050:69:14"
                                            }
                                        ]
                                    },
                                    "id": 5596,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getInstantRelayHash",
                                    "nameLocation": "44602:20:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5582,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5578,
                                                "mutability": "mutable",
                                                "name": "depositHash",
                                                "nameLocation": "44631:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5596,
                                                "src": "44623:19:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5577,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "44623:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5581,
                                                "mutability": "mutable",
                                                "name": "relayData",
                                                "nameLocation": "44661:9:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5596,
                                                "src": "44644:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_RelayData_$3952_memory_ptr",
                                                    "typeString": "struct BridgePool.RelayData"
                                                },
                                                "typeName": {
                                                    "id": 5580,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5579,
                                                        "name": "RelayData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3952,
                                                        "src": "44644:9:14"
                                                    },
                                                    "referencedDeclaration": 3952,
                                                    "src": "44644:9:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_RelayData_$3952_storage_ptr",
                                                        "typeString": "struct BridgePool.RelayData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "44622:49:14"
                                    },
                                    "returnParameters": {
                                        "id": 5585,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5584,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5596,
                                                "src": "44694:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5583,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "44694:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "44693:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "44593:533:14",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5624,
                                        "nodeType": "Block",
                                        "src": "45195:477:14",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5602
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5602,
                                                        "mutability": "mutable",
                                                        "name": "possibleUnpaidFees",
                                                        "nameLocation": "45442:18:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5624,
                                                        "src": "45434:26:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5601,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "45434:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5616,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5615,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 5611,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "commonType": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "id": 5605,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                        "id": 5603,
                                                                        "name": "undistributedLpFees",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3902,
                                                                        "src": "45476:19:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "*",
                                                                    "rightExpression": {
                                                                        "id": 5604,
                                                                        "name": "lpFeeRatePerSecond",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3892,
                                                                        "src": "45498:18:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint64",
                                                                            "typeString": "uint64"
                                                                        }
                                                                    },
                                                                    "src": "45476:40:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "*",
                                                                "rightExpression": {
                                                                    "components": [
                                                                        {
                                                                            "commonType": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            },
                                                                            "id": 5609,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                                "arguments": [],
                                                                                "expression": {
                                                                                    "argumentTypes": [],
                                                                                    "id": 5606,
                                                                                    "name": "getCurrentTime",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 3789,
                                                                                    "src": "45520:14:14",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                                        "typeString": "function () view returns (uint256)"
                                                                                    }
                                                                                },
                                                                                "id": 5607,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "functionCall",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "45520:16:14",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "-",
                                                                            "rightExpression": {
                                                                                "id": 5608,
                                                                                "name": "lastLpFeeUpdate",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3894,
                                                                                "src": "45539:15:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint32",
                                                                                    "typeString": "uint32"
                                                                                }
                                                                            },
                                                                            "src": "45520:34:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "id": 5610,
                                                                    "isConstant": false,
                                                                    "isInlineArray": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "nodeType": "TupleExpression",
                                                                    "src": "45519:36:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "45476:79:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 5612,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "45475:81:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "components": [
                                                            {
                                                                "hexValue": "31653138",
                                                                "id": 5613,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "45560:4:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                                    "typeString": "int_const 1000000000000000000"
                                                                },
                                                                "value": "1e18"
                                                            }
                                                        ],
                                                        "id": 5614,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "45559:6:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                            "typeString": "int_const 1000000000000000000"
                                                        }
                                                    },
                                                    "src": "45475:90:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "45434:131:14"
                                            },
                                            {
                                                "expression": {
                                                    "condition": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 5619,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5617,
                                                            "name": "possibleUnpaidFees",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5602,
                                                            "src": "45582:18:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "<",
                                                        "rightExpression": {
                                                            "id": 5618,
                                                            "name": "undistributedLpFees",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3902,
                                                            "src": "45603:19:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "45582:40:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                        }
                                                    },
                                                    "falseExpression": {
                                                        "id": 5621,
                                                        "name": "undistributedLpFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3902,
                                                        "src": "45646:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "id": 5622,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "Conditional",
                                                    "src": "45582:83:14",
                                                    "trueExpression": {
                                                        "id": 5620,
                                                        "name": "possibleUnpaidFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5602,
                                                        "src": "45625:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5600,
                                                "id": 5623,
                                                "nodeType": "Return",
                                                "src": "45575:90:14"
                                            }
                                        ]
                                    },
                                    "id": 5625,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getAccumulatedFees",
                                    "nameLocation": "45141:19:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5597,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "45160:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5600,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5599,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5625,
                                                "src": "45186:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5598,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "45186:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "45185:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "45132:540:14",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5647,
                                        "nodeType": "Block",
                                        "src": "45835:385:14",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5629
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5629,
                                                        "mutability": "mutable",
                                                        "name": "unallocatedAccumulatedFees",
                                                        "nameLocation": "45949:26:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5647,
                                                        "src": "45941:34:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5628,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "45941:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5632,
                                                "initialValue": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "id": 5630,
                                                        "name": "_getAccumulatedFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5625,
                                                        "src": "45978:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                            "typeString": "function () view returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5631,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "45978:21:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "45941:58:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5637,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5633,
                                                        "name": "undistributedLpFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3902,
                                                        "src": "46090:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "commonType": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "id": 5636,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                            "id": 5634,
                                                            "name": "undistributedLpFees",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3902,
                                                            "src": "46112:19:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "-",
                                                        "rightExpression": {
                                                            "id": 5635,
                                                            "name": "unallocatedAccumulatedFees",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5629,
                                                            "src": "46134:26:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "src": "46112:48:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "46090:70:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5638,
                                                "nodeType": "ExpressionStatement",
                                                "src": "46090:70:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5645,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5639,
                                                        "name": "lastLpFeeUpdate",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3894,
                                                        "src": "46171:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 5642,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3789,
                                                                    "src": "46196:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 5643,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "46196:16:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 5641,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "46189:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_uint32_$",
                                                                "typeString": "type(uint32)"
                                                            },
                                                            "typeName": {
                                                                "id": 5640,
                                                                "name": "uint32",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "46189:6:14",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 5644,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "46189:24:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint32",
                                                            "typeString": "uint32"
                                                        }
                                                    },
                                                    "src": "46171:42:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "id": 5646,
                                                "nodeType": "ExpressionStatement",
                                                "src": "46171:42:14"
                                            }
                                        ]
                                    },
                                    "id": 5648,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_updateAccumulatedLpFees",
                                    "nameLocation": "45799:24:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5626,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "45823:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5627,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "45835:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "45790:430:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5664,
                                        "nodeType": "Block",
                                        "src": "46343:281:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "id": 5655,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5653,
                                                        "name": "undistributedLpFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3902,
                                                        "src": "46526:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "id": 5654,
                                                        "name": "allocatedLpFees",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5650,
                                                        "src": "46549:15:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "46526:38:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5656,
                                                "nodeType": "ExpressionStatement",
                                                "src": "46526:38:14"
                                            },
                                            {
                                                "expression": {
                                                    "id": 5662,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftHandSide": {
                                                        "id": 5657,
                                                        "name": "utilizedReserves",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3883,
                                                        "src": "46574:16:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "nodeType": "Assignment",
                                                    "operator": "+=",
                                                    "rightHandSide": {
                                                        "arguments": [
                                                            {
                                                                "id": 5660,
                                                                "name": "allocatedLpFees",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5650,
                                                                "src": "46601:15:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "id": 5659,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "nodeType": "ElementaryTypeNameExpression",
                                                            "src": "46594:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_int256_$",
                                                                "typeString": "type(int256)"
                                                            },
                                                            "typeName": {
                                                                "id": 5658,
                                                                "name": "int256",
                                                                "nodeType": "ElementaryTypeName",
                                                                "src": "46594:6:14",
                                                                "typeDescriptions": {}
                                                            }
                                                        },
                                                        "id": 5661,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "typeConversion",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "46594:23:14",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_int256",
                                                            "typeString": "int256"
                                                        }
                                                    },
                                                    "src": "46574:43:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "id": 5663,
                                                "nodeType": "ExpressionStatement",
                                                "src": "46574:43:14"
                                            }
                                        ]
                                    },
                                    "id": 5665,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_allocateLpFees",
                                    "nameLocation": "46293:15:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5651,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5650,
                                                "mutability": "mutable",
                                                "name": "allocatedLpFees",
                                                "nameLocation": "46317:15:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5665,
                                                "src": "46309:23:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5649,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "46309:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "46308:25:14"
                                    },
                                    "returnParameters": {
                                        "id": 5652,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "46343:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "46284:340:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5681,
                                        "nodeType": "Block",
                                        "src": "46720:49:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5679,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "components": [
                                                            {
                                                                "commonType": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                },
                                                                "id": 5676,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                    "id": 5674,
                                                                    "name": "percent",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5667,
                                                                    "src": "46738:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint64",
                                                                        "typeString": "uint64"
                                                                    }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "*",
                                                                "rightExpression": {
                                                                    "id": 5675,
                                                                    "name": "amount",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5669,
                                                                    "src": "46748:6:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                },
                                                                "src": "46738:16:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            }
                                                        ],
                                                        "id": 5677,
                                                        "isConstant": false,
                                                        "isInlineArray": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "nodeType": "TupleExpression",
                                                        "src": "46737:18:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "/",
                                                    "rightExpression": {
                                                        "hexValue": "31653138",
                                                        "id": 5678,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "46758:4:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                            "typeString": "int_const 1000000000000000000"
                                                        },
                                                        "value": "1e18"
                                                    },
                                                    "src": "46737:25:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5673,
                                                "id": 5680,
                                                "nodeType": "Return",
                                                "src": "46730:32:14"
                                            }
                                        ]
                                    },
                                    "id": 5682,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getAmountFromPct",
                                    "nameLocation": "46639:17:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5670,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5667,
                                                "mutability": "mutable",
                                                "name": "percent",
                                                "nameLocation": "46664:7:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5682,
                                                "src": "46657:14:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 5666,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "46657:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5669,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "46681:6:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5682,
                                                "src": "46673:14:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5668,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "46673:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "46656:32:14"
                                    },
                                    "returnParameters": {
                                        "id": 5673,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5672,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5682,
                                                "src": "46711:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5671,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "46711:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "46710:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "46630:139:14",
                                    "stateMutability": "pure",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5694,
                                        "nodeType": "Block",
                                        "src": "46848:66:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 5690,
                                                            "name": "proposerBondPct",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3896,
                                                            "src": "46883:15:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            }
                                                        },
                                                        {
                                                            "id": 5691,
                                                            "name": "amount",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5684,
                                                            "src": "46900:6:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_uint64",
                                                                "typeString": "uint64"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "id": 5689,
                                                        "name": "_getAmountFromPct",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5682,
                                                        "src": "46865:17:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_pure$_t_uint64_$_t_uint256_$returns$_t_uint256_$",
                                                            "typeString": "function (uint64,uint256) pure returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5692,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "46865:42:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5688,
                                                "id": 5693,
                                                "nodeType": "Return",
                                                "src": "46858:49:14"
                                            }
                                        ]
                                    },
                                    "id": 5695,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getProposerBond",
                                    "nameLocation": "46784:16:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5685,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5684,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "46809:6:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5695,
                                                "src": "46801:14:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5683,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "46801:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "46800:16:14"
                                    },
                                    "returnParameters": {
                                        "id": 5688,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5687,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5695,
                                                "src": "46839:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5686,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "46839:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "46838:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "46775:139:14",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5714,
                                        "nodeType": "Block",
                                        "src": "47008:76:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5706,
                                                                    "name": "depositData",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5698,
                                                                    "src": "47046:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    }
                                                                },
                                                                {
                                                                    "arguments": [
                                                                        {
                                                                            "id": 5709,
                                                                            "name": "l1Token",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3877,
                                                                            "src": "47067:7:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "argumentTypes": [
                                                                            {
                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                "typeString": "contract IERC20"
                                                                            }
                                                                        ],
                                                                        "id": 5708,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "lValueRequested": false,
                                                                        "nodeType": "ElementaryTypeNameExpression",
                                                                        "src": "47059:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_type$_t_address_$",
                                                                            "typeString": "type(address)"
                                                                        },
                                                                        "typeName": {
                                                                            "id": 5707,
                                                                            "name": "address",
                                                                            "nodeType": "ElementaryTypeName",
                                                                            "src": "47059:7:14",
                                                                            "typeDescriptions": {}
                                                                        }
                                                                    },
                                                                    "id": 5710,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "typeConversion",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "47059:16:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                                        "typeString": "struct BridgePool.DepositData memory"
                                                                    },
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "id": 5704,
                                                                    "name": "abi",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -1,
                                                                    "src": "47035:3:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_magic_abi",
                                                                        "typeString": "abi"
                                                                    }
                                                                },
                                                                "id": 5705,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "memberName": "encode",
                                                                "nodeType": "MemberAccess",
                                                                "src": "47035:10:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                                                    "typeString": "function () pure returns (bytes memory)"
                                                                }
                                                            },
                                                            "id": 5711,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "47035:41:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        ],
                                                        "id": 5703,
                                                        "name": "keccak256",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -8,
                                                        "src": "47025:9:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                                        }
                                                    },
                                                    "id": 5712,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "47025:52:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "functionReturnParameters": 5702,
                                                "id": 5713,
                                                "nodeType": "Return",
                                                "src": "47018:59:14"
                                            }
                                        ]
                                    },
                                    "id": 5715,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_getDepositHash",
                                    "nameLocation": "46929:15:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5699,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5698,
                                                "mutability": "mutable",
                                                "name": "depositData",
                                                "nameLocation": "46964:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5715,
                                                "src": "46945:30:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositData_$3936_memory_ptr",
                                                    "typeString": "struct BridgePool.DepositData"
                                                },
                                                "typeName": {
                                                    "id": 5697,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 5696,
                                                        "name": "DepositData",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 3936,
                                                        "src": "46945:11:14"
                                                    },
                                                    "referencedDeclaration": 3936,
                                                    "src": "46945:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositData_$3936_storage_ptr",
                                                        "typeString": "struct BridgePool.DepositData"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "46944:32:14"
                                    },
                                    "returnParameters": {
                                        "id": 5702,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5701,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5715,
                                                "src": "46999:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 5700,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "46999:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "46998:9:14"
                                    },
                                    "scope": 5950,
                                    "src": "46920:164:14",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5904,
                                        "nodeType": "Block",
                                        "src": "47537:3143:14",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    5731
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5731,
                                                        "mutability": "mutable",
                                                        "name": "totalBond",
                                                        "nameLocation": "47555:9:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5904,
                                                        "src": "47547:17:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        },
                                                        "typeName": {
                                                            "id": 5730,
                                                            "name": "uint256",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "47547:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5735,
                                                "initialValue": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    },
                                                    "id": 5734,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                        "id": 5732,
                                                        "name": "finalFee",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5723,
                                                        "src": "47567:8:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "+",
                                                    "rightExpression": {
                                                        "id": 5733,
                                                        "name": "proposerBond",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5721,
                                                        "src": "47578:12:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_uint256",
                                                            "typeString": "uint256"
                                                        }
                                                    },
                                                    "src": "47567:23:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "47547:43:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5741,
                                                                    "name": "optimisticOracle",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3913,
                                                                    "src": "47628:16:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                        "typeString": "contract SkinnyOptimisticOracleInterface"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                        "typeString": "contract SkinnyOptimisticOracleInterface"
                                                                    }
                                                                ],
                                                                "id": 5740,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "47620:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5739,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "47620:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5742,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "47620:25:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5743,
                                                            "name": "totalBond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5731,
                                                            "src": "47647:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5736,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3877,
                                                            "src": "47600:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 5738,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "safeApprove",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 710,
                                                        "src": "47600:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                            "typeString": "function (contract IERC20,address,uint256)"
                                                        }
                                                    },
                                                    "id": 5744,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "47600:57:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5745,
                                                "nodeType": "ExpressionStatement",
                                                "src": "47600:57:14"
                                            },
                                            {
                                                "clauses": [
                                                    {
                                                        "block": {
                                                            "id": 5802,
                                                            "nodeType": "Block",
                                                            "src": "48494:377:14",
                                                            "statements": [
                                                                {
                                                                    "condition": {
                                                                        "commonType": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        },
                                                                        "id": 5772,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                            "id": 5770,
                                                                            "name": "bondSpent",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5768,
                                                                            "src": "48512:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "<",
                                                                        "rightExpression": {
                                                                            "id": 5771,
                                                                            "name": "totalBond",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 5731,
                                                                            "src": "48524:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_uint256",
                                                                                "typeString": "uint256"
                                                                            }
                                                                        },
                                                                        "src": "48512:21:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        }
                                                                    },
                                                                    "id": 5801,
                                                                    "nodeType": "IfStatement",
                                                                    "src": "48508:353:14",
                                                                    "trueBody": {
                                                                        "id": 5800,
                                                                        "nodeType": "Block",
                                                                        "src": "48535:326:14",
                                                                        "statements": [
                                                                            {
                                                                                "assignments": [
                                                                                    5774
                                                                                ],
                                                                                "declarations": [
                                                                                    {
                                                                                        "constant": false,
                                                                                        "id": 5774,
                                                                                        "mutability": "mutable",
                                                                                        "name": "refund",
                                                                                        "nameLocation": "48654:6:14",
                                                                                        "nodeType": "VariableDeclaration",
                                                                                        "scope": 5800,
                                                                                        "src": "48646:14:14",
                                                                                        "stateVariable": false,
                                                                                        "storageLocation": "default",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        },
                                                                                        "typeName": {
                                                                                            "id": 5773,
                                                                                            "name": "uint256",
                                                                                            "nodeType": "ElementaryTypeName",
                                                                                            "src": "48646:7:14",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        },
                                                                                        "visibility": "internal"
                                                                                    }
                                                                                ],
                                                                                "id": 5778,
                                                                                "initialValue": {
                                                                                    "commonType": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    },
                                                                                    "id": 5777,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                        "id": 5775,
                                                                                        "name": "totalBond",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5731,
                                                                                        "src": "48663:9:14",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "-",
                                                                                    "rightExpression": {
                                                                                        "id": 5776,
                                                                                        "name": "bondSpent",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5768,
                                                                                        "src": "48675:9:14",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "src": "48663:21:14",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "nodeType": "VariableDeclarationStatement",
                                                                                "src": "48646:38:14"
                                                                            },
                                                                            {
                                                                                "expression": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "id": 5782,
                                                                                            "name": "proposer",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5717,
                                                                                            "src": "48723:8:14",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        {
                                                                                            "id": 5783,
                                                                                            "name": "refund",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 5774,
                                                                                            "src": "48733:6:14",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        }
                                                                                    ],
                                                                                    "expression": {
                                                                                        "argumentTypes": [
                                                                                            {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            },
                                                                                            {
                                                                                                "typeIdentifier": "t_uint256",
                                                                                                "typeString": "uint256"
                                                                                            }
                                                                                        ],
                                                                                        "expression": {
                                                                                            "id": 5779,
                                                                                            "name": "l1Token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3877,
                                                                                            "src": "48702:7:14",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                                "typeString": "contract IERC20"
                                                                                            }
                                                                                        },
                                                                                        "id": 5781,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "safeTransfer",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 640,
                                                                                        "src": "48702:20:14",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                                            "typeString": "function (contract IERC20,address,uint256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 5784,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "functionCall",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "48702:38:14",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_tuple$__$",
                                                                                        "typeString": "tuple()"
                                                                                    }
                                                                                },
                                                                                "id": 5785,
                                                                                "nodeType": "ExpressionStatement",
                                                                                "src": "48702:38:14"
                                                                            },
                                                                            {
                                                                                "expression": {
                                                                                    "arguments": [
                                                                                        {
                                                                                            "arguments": [
                                                                                                {
                                                                                                    "id": 5791,
                                                                                                    "name": "optimisticOracle",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 3913,
                                                                                                    "src": "48786:16:14",
                                                                                                    "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                                                        "typeString": "contract SkinnyOptimisticOracleInterface"
                                                                                                    }
                                                                                                }
                                                                                            ],
                                                                                            "expression": {
                                                                                                "argumentTypes": [
                                                                                                    {
                                                                                                        "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                                                        "typeString": "contract SkinnyOptimisticOracleInterface"
                                                                                                    }
                                                                                                ],
                                                                                                "id": 5790,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                                                "src": "48778:7:14",
                                                                                                "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                                                    "typeString": "type(address)"
                                                                                                },
                                                                                                "typeName": {
                                                                                                    "id": 5789,
                                                                                                    "name": "address",
                                                                                                    "nodeType": "ElementaryTypeName",
                                                                                                    "src": "48778:7:14",
                                                                                                    "typeDescriptions": {}
                                                                                                }
                                                                                            },
                                                                                            "id": 5792,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "kind": "typeConversion",
                                                                                            "lValueRequested": false,
                                                                                            "names": [],
                                                                                            "nodeType": "FunctionCall",
                                                                                            "src": "48778:25:14",
                                                                                            "tryCall": false,
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_address",
                                                                                                "typeString": "address"
                                                                                            }
                                                                                        },
                                                                                        {
                                                                                            "hexValue": "30",
                                                                                            "id": 5793,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "number",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "48805:1:14",
                                                                                            "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": {
                                                                                            "id": 5786,
                                                                                            "name": "l1Token",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 3877,
                                                                                            "src": "48758:7:14",
                                                                                            "typeDescriptions": {
                                                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                                "typeString": "contract IERC20"
                                                                                            }
                                                                                        },
                                                                                        "id": 5788,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "memberName": "safeApprove",
                                                                                        "nodeType": "MemberAccess",
                                                                                        "referencedDeclaration": 710,
                                                                                        "src": "48758:19:14",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                                            "typeString": "function (contract IERC20,address,uint256)"
                                                                                        }
                                                                                    },
                                                                                    "id": 5794,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "kind": "functionCall",
                                                                                    "lValueRequested": false,
                                                                                    "names": [],
                                                                                    "nodeType": "FunctionCall",
                                                                                    "src": "48758:49:14",
                                                                                    "tryCall": false,
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_tuple$__$",
                                                                                        "typeString": "tuple()"
                                                                                    }
                                                                                },
                                                                                "id": 5795,
                                                                                "nodeType": "ExpressionStatement",
                                                                                "src": "48758:49:14"
                                                                            },
                                                                            {
                                                                                "expression": {
                                                                                    "id": 5798,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftHandSide": {
                                                                                        "id": 5796,
                                                                                        "name": "totalBond",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5731,
                                                                                        "src": "48825:9:14",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "nodeType": "Assignment",
                                                                                    "operator": "=",
                                                                                    "rightHandSide": {
                                                                                        "id": 5797,
                                                                                        "name": "bondSpent",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 5768,
                                                                                        "src": "48837:9:14",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_uint256",
                                                                                            "typeString": "uint256"
                                                                                        }
                                                                                    },
                                                                                    "src": "48825:21:14",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_uint256",
                                                                                        "typeString": "uint256"
                                                                                    }
                                                                                },
                                                                                "id": 5799,
                                                                                "nodeType": "ExpressionStatement",
                                                                                "src": "48825:21:14"
                                                                            }
                                                                        ]
                                                                    }
                                                                }
                                                            ]
                                                        },
                                                        "errorName": "",
                                                        "id": 5803,
                                                        "nodeType": "TryCatchClause",
                                                        "parameters": {
                                                            "id": 5769,
                                                            "nodeType": "ParameterList",
                                                            "parameters": [
                                                                {
                                                                    "constant": false,
                                                                    "id": 5768,
                                                                    "mutability": "mutable",
                                                                    "name": "bondSpent",
                                                                    "nameLocation": "48483:9:14",
                                                                    "nodeType": "VariableDeclaration",
                                                                    "scope": 5803,
                                                                    "src": "48475:17:14",
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    },
                                                                    "typeName": {
                                                                        "id": 5767,
                                                                        "name": "uint256",
                                                                        "nodeType": "ElementaryTypeName",
                                                                        "src": "48475:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    },
                                                                    "visibility": "internal"
                                                                }
                                                            ],
                                                            "src": "48474:19:14"
                                                        },
                                                        "src": "48466:405:14"
                                                    },
                                                    {
                                                        "block": {
                                                            "id": 5823,
                                                            "nodeType": "Block",
                                                            "src": "48878:579:14",
                                                            "statements": [
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "id": 5807,
                                                                                "name": "proposer",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5717,
                                                                                "src": "49243:8:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            {
                                                                                "id": 5808,
                                                                                "name": "totalBond",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 5731,
                                                                                "src": "49253:9:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                },
                                                                                {
                                                                                    "typeIdentifier": "t_uint256",
                                                                                    "typeString": "uint256"
                                                                                }
                                                                            ],
                                                                            "expression": {
                                                                                "id": 5804,
                                                                                "name": "l1Token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3877,
                                                                                "src": "49222:7:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                    "typeString": "contract IERC20"
                                                                                }
                                                                            },
                                                                            "id": 5806,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "safeTransfer",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 640,
                                                                            "src": "49222:20:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                                "typeString": "function (contract IERC20,address,uint256)"
                                                                            }
                                                                        },
                                                                        "id": 5809,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "49222:41:14",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_tuple$__$",
                                                                            "typeString": "tuple()"
                                                                        }
                                                                    },
                                                                    "id": 5810,
                                                                    "nodeType": "ExpressionStatement",
                                                                    "src": "49222:41:14"
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "id": 5816,
                                                                                        "name": "optimisticOracle",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3913,
                                                                                        "src": "49305:16:14",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                                            "typeString": "contract SkinnyOptimisticOracleInterface"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                                            "typeString": "contract SkinnyOptimisticOracleInterface"
                                                                                        }
                                                                                    ],
                                                                                    "id": 5815,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                    "src": "49297:7:14",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                                        "typeString": "type(address)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 5814,
                                                                                        "name": "address",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "49297:7:14",
                                                                                        "typeDescriptions": {}
                                                                                    }
                                                                                },
                                                                                "id": 5817,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "typeConversion",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "49297:25:14",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            },
                                                                            {
                                                                                "hexValue": "30",
                                                                                "id": 5818,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "49324:1:14",
                                                                                "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": {
                                                                                "id": 5811,
                                                                                "name": "l1Token",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 3877,
                                                                                "src": "49277:7:14",
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                    "typeString": "contract IERC20"
                                                                                }
                                                                            },
                                                                            "id": 5813,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "memberName": "safeApprove",
                                                                            "nodeType": "MemberAccess",
                                                                            "referencedDeclaration": 710,
                                                                            "src": "49277:19:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                                "typeString": "function (contract IERC20,address,uint256)"
                                                                            }
                                                                        },
                                                                        "id": 5819,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "functionCall",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "49277:49:14",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_tuple$__$",
                                                                            "typeString": "tuple()"
                                                                        }
                                                                    },
                                                                    "id": 5820,
                                                                    "nodeType": "ExpressionStatement",
                                                                    "src": "49277:49:14"
                                                                },
                                                                {
                                                                    "expression": {
                                                                        "hexValue": "66616c7365",
                                                                        "id": 5821,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "bool",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "49441:5:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                        },
                                                                        "value": "false"
                                                                    },
                                                                    "functionReturnParameters": 5729,
                                                                    "id": 5822,
                                                                    "nodeType": "Return",
                                                                    "src": "49434:12:14"
                                                                }
                                                            ]
                                                        },
                                                        "errorName": "",
                                                        "id": 5824,
                                                        "nodeType": "TryCatchClause",
                                                        "src": "48872:585:14"
                                                    }
                                                ],
                                                "externalCall": {
                                                    "arguments": [
                                                        {
                                                            "id": 5748,
                                                            "name": "identifier",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3915,
                                                            "src": "47743:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 5751,
                                                                        "name": "getCurrentTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3789,
                                                                        "src": "47778:14:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                            "typeString": "function () view returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 5752,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "47778:16:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5750,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "47771:6:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint32_$",
                                                                    "typeString": "type(uint32)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5749,
                                                                    "name": "uint32",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "47771:6:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5753,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "47771:24:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 5754,
                                                            "name": "customAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5725,
                                                            "src": "47813:19:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5756,
                                                                    "name": "l1Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3877,
                                                                    "src": "47857:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                ],
                                                                "id": 5755,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 584,
                                                                "src": "47850:6:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$584_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 5757,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "47850:15:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 5758,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "48065:1:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "id": 5759,
                                                            "name": "proposerBond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5721,
                                                            "src": "48166:12:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 5760,
                                                            "name": "optimisticOracleLiveness",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3898,
                                                            "src": "48273:24:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 5761,
                                                            "name": "proposer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5717,
                                                            "src": "48315:8:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "31653138",
                                                                    "id": 5764,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "48438:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                                        "typeString": "int_const 1000000000000000000"
                                                                    },
                                                                    "value": "1e18"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                                        "typeString": "int_const 1000000000000000000"
                                                                    }
                                                                ],
                                                                "id": 5763,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "48431:6:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5762,
                                                                    "name": "int256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "48431:6:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5765,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "48431:12:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5746,
                                                            "name": "optimisticOracle",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3913,
                                                            "src": "47683:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                "typeString": "contract SkinnyOptimisticOracleInterface"
                                                            }
                                                        },
                                                        "id": 5747,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "requestAndProposePriceFor",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 6549,
                                                        "src": "47683:42:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint32_$_t_bytes_memory_ptr_$_t_contract$_IERC20_$584_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_int256_$returns$_t_uint256_$",
                                                            "typeString": "function (bytes32,uint32,bytes memory,contract IERC20,uint256,uint256,uint256,address,int256) external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5766,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "47683:774:14",
                                                    "tryCall": true,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5825,
                                                "nodeType": "TryStatement",
                                                "src": "47667:1790:14"
                                            },
                                            {
                                                "assignments": [
                                                    5830
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 5830,
                                                        "mutability": "mutable",
                                                        "name": "request",
                                                        "nameLocation": "49514:7:14",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 5904,
                                                        "src": "49467:54:14",
                                                        "stateVariable": false,
                                                        "storageLocation": "memory",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                            "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                        },
                                                        "typeName": {
                                                            "id": 5829,
                                                            "nodeType": "UserDefinedTypeName",
                                                            "pathNode": {
                                                                "id": 5828,
                                                                "name": "SkinnyOptimisticOracleInterface.Request",
                                                                "nodeType": "IdentifierPath",
                                                                "referencedDeclaration": 6460,
                                                                "src": "49467:39:14"
                                                            },
                                                            "referencedDeclaration": 6460,
                                                            "src": "49467:39:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Request_$6460_storage_ptr",
                                                                "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 5861,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "id": 5833,
                                                            "name": "proposer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5717,
                                                            "src": "49604:8:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "30",
                                                                    "id": 5836,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "49648:1:14",
                                                                    "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": 5835,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "49640:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5834,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "49640:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5837,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "49640:10:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5839,
                                                                    "name": "l1Token",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3877,
                                                                    "src": "49685:7:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                                        "typeString": "contract IERC20"
                                                                    }
                                                                ],
                                                                "id": 5838,
                                                                "name": "IERC20",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 584,
                                                                "src": "49678:6:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$584_$",
                                                                    "typeString": "type(contract IERC20)"
                                                                }
                                                            },
                                                            "id": 5840,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "49678:15:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "66616c7365",
                                                            "id": 5841,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "bool",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "49720:5:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            "value": "false"
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "hexValue": "31653138",
                                                                    "id": 5844,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "49765:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                                        "typeString": "int_const 1000000000000000000"
                                                                    },
                                                                    "value": "1e18"
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                                                        "typeString": "int_const 1000000000000000000"
                                                                    }
                                                                ],
                                                                "id": 5843,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "49758:6:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_int256_$",
                                                                    "typeString": "type(int256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5842,
                                                                    "name": "int256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "49758:6:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5845,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "49758:12:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 5846,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "49803:1:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 5850,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "arguments": [],
                                                                "expression": {
                                                                    "argumentTypes": [],
                                                                    "id": 5847,
                                                                    "name": "getCurrentTime",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3789,
                                                                    "src": "49838:14:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                        "typeString": "function () view returns (uint256)"
                                                                    }
                                                                },
                                                                "id": 5848,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "49838:16:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "+",
                                                            "rightExpression": {
                                                                "id": 5849,
                                                                "name": "optimisticOracleLiveness",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3898,
                                                                "src": "49857:24:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint32",
                                                                    "typeString": "uint32"
                                                                }
                                                            },
                                                            "src": "49838:43:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "hexValue": "30",
                                                            "id": 5851,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "49907:1:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            "value": "0"
                                                        },
                                                        {
                                                            "commonType": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            "id": 5854,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                                "id": 5852,
                                                                "name": "totalBond",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5731,
                                                                "src": "49936:9:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "-",
                                                            "rightExpression": {
                                                                "id": 5853,
                                                                "name": "proposerBond",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 5721,
                                                                "src": "49948:12:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            },
                                                            "src": "49936:24:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "id": 5855,
                                                            "name": "proposerBond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5721,
                                                            "src": "49984:12:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5858,
                                                                    "name": "optimisticOracleLiveness",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3898,
                                                                    "src": "50038:24:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint32",
                                                                        "typeString": "uint32"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint32",
                                                                        "typeString": "uint32"
                                                                    }
                                                                ],
                                                                "id": 5857,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "50030:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                                    "typeString": "type(uint256)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5856,
                                                                    "name": "uint256",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "50030:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5859,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "50030:33:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_int256",
                                                                "typeString": "int256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_rational_0_by_1",
                                                                "typeString": "int_const 0"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5831,
                                                            "name": "SkinnyOptimisticOracleInterface",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 6650,
                                                            "src": "49536:31:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_type$_t_contract$_SkinnyOptimisticOracleInterface_$6650_$",
                                                                "typeString": "type(contract SkinnyOptimisticOracleInterface)"
                                                            }
                                                        },
                                                        "id": 5832,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "Request",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 6460,
                                                        "src": "49536:39:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_struct$_Request_$6460_storage_ptr_$",
                                                            "typeString": "type(struct SkinnyOptimisticOracleInterface.Request storage pointer)"
                                                        }
                                                    },
                                                    "id": 5860,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "structConstructorCall",
                                                    "lValueRequested": false,
                                                    "names": [
                                                        "proposer",
                                                        "disputer",
                                                        "currency",
                                                        "settled",
                                                        "proposedPrice",
                                                        "resolvedPrice",
                                                        "expirationTime",
                                                        "reward",
                                                        "finalFee",
                                                        "bond",
                                                        "customLiveness"
                                                    ],
                                                    "nodeType": "FunctionCall",
                                                    "src": "49536:542:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request memory"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "49467:611:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "expression": {
                                                                "id": 5865,
                                                                "name": "msg",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": -15,
                                                                "src": "50202:3:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_magic_message",
                                                                    "typeString": "msg"
                                                                }
                                                            },
                                                            "id": 5866,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "memberName": "sender",
                                                            "nodeType": "MemberAccess",
                                                            "src": "50202:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5869,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -28,
                                                                    "src": "50222:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                        "typeString": "contract BridgePool"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                        "typeString": "contract BridgePool"
                                                                    }
                                                                ],
                                                                "id": 5868,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "50214:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5867,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "50214:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5870,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "50214:13:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5871,
                                                            "name": "totalBond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5731,
                                                            "src": "50229:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5862,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3877,
                                                            "src": "50177:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 5864,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "safeTransferFrom",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 666,
                                                        "src": "50177:24:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                            "typeString": "function (contract IERC20,address,address,uint256)"
                                                        }
                                                    },
                                                    "id": 5872,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "50177:62:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5873,
                                                "nodeType": "ExpressionStatement",
                                                "src": "50177:62:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5879,
                                                                    "name": "optimisticOracle",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3913,
                                                                    "src": "50277:16:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                        "typeString": "contract SkinnyOptimisticOracleInterface"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                        "typeString": "contract SkinnyOptimisticOracleInterface"
                                                                    }
                                                                ],
                                                                "id": 5878,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "50269:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5877,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "50269:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5880,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "50269:25:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "id": 5881,
                                                            "name": "totalBond",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5731,
                                                            "src": "50296:9:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint256",
                                                                "typeString": "uint256"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5874,
                                                            "name": "l1Token",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3877,
                                                            "src": "50249:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                                "typeString": "contract IERC20"
                                                            }
                                                        },
                                                        "id": 5876,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "safeApprove",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 710,
                                                        "src": "50249:19:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                            "typeString": "function (contract IERC20,address,uint256)"
                                                        }
                                                    },
                                                    "id": 5882,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "50249:57:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_tuple$__$",
                                                        "typeString": "tuple()"
                                                    }
                                                },
                                                "id": 5883,
                                                "nodeType": "ExpressionStatement",
                                                "src": "50249:57:14"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [
                                                        {
                                                            "id": 5887,
                                                            "name": "identifier",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3915,
                                                            "src": "50412:10:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "arguments": [],
                                                                    "expression": {
                                                                        "argumentTypes": [],
                                                                        "id": 5890,
                                                                        "name": "getCurrentTime",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3789,
                                                                        "src": "50443:14:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                                                                            "typeString": "function () view returns (uint256)"
                                                                        }
                                                                    },
                                                                    "id": 5891,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "kind": "functionCall",
                                                                    "lValueRequested": false,
                                                                    "names": [],
                                                                    "nodeType": "FunctionCall",
                                                                    "src": "50443:16:14",
                                                                    "tryCall": false,
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_uint256",
                                                                        "typeString": "uint256"
                                                                    }
                                                                ],
                                                                "id": 5889,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "50436:6:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_uint32_$",
                                                                    "typeString": "type(uint32)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5888,
                                                                    "name": "uint32",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "50436:6:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5892,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "50436:24:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            }
                                                        },
                                                        {
                                                            "id": 5893,
                                                            "name": "customAncillaryData",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5725,
                                                            "src": "50474:19:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 5894,
                                                            "name": "request",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5830,
                                                            "src": "50507:7:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                                "typeString": "struct SkinnyOptimisticOracleInterface.Request memory"
                                                            }
                                                        },
                                                        {
                                                            "id": 5895,
                                                            "name": "disputer",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 5719,
                                                            "src": "50528:8:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 5898,
                                                                    "name": "this",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": -28,
                                                                    "src": "50558:4:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                        "typeString": "contract BridgePool"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_contract$_BridgePool_$5950",
                                                                        "typeString": "contract BridgePool"
                                                                    }
                                                                ],
                                                                "id": 5897,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "50550:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5896,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "50550:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5899,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "50550:13:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_bytes32",
                                                                "typeString": "bytes32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_uint32",
                                                                "typeString": "uint32"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                                "typeString": "bytes memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                                "typeString": "struct SkinnyOptimisticOracleInterface.Request memory"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            },
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "expression": {
                                                            "id": 5884,
                                                            "name": "optimisticOracle",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3913,
                                                            "src": "50366:16:14",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_SkinnyOptimisticOracleInterface_$6650",
                                                                "typeString": "contract SkinnyOptimisticOracleInterface"
                                                            }
                                                        },
                                                        "id": 5886,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "disputePriceFor",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 6568,
                                                        "src": "50366:32:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint32_$_t_bytes_memory_ptr_$_t_struct$_Request_$6460_memory_ptr_$_t_address_$_t_address_$returns$_t_uint256_$",
                                                            "typeString": "function (bytes32,uint32,bytes memory,struct SkinnyOptimisticOracleInterface.Request memory,address,address) external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 5900,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "50366:207:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "id": 5901,
                                                "nodeType": "ExpressionStatement",
                                                "src": "50366:207:14"
                                            },
                                            {
                                                "expression": {
                                                    "hexValue": "74727565",
                                                    "id": 5902,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "50669:4:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                },
                                                "functionReturnParameters": 5729,
                                                "id": 5903,
                                                "nodeType": "Return",
                                                "src": "50662:11:14"
                                            }
                                        ]
                                    },
                                    "id": 5905,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_requestProposeDispute",
                                    "nameLocation": "47335:22:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5726,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5717,
                                                "mutability": "mutable",
                                                "name": "proposer",
                                                "nameLocation": "47375:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5905,
                                                "src": "47367:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5716,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "47367:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5719,
                                                "mutability": "mutable",
                                                "name": "disputer",
                                                "nameLocation": "47401:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5905,
                                                "src": "47393:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5718,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "47393:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5721,
                                                "mutability": "mutable",
                                                "name": "proposerBond",
                                                "nameLocation": "47427:12:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5905,
                                                "src": "47419:20:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5720,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "47419:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5723,
                                                "mutability": "mutable",
                                                "name": "finalFee",
                                                "nameLocation": "47457:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5905,
                                                "src": "47449:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5722,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "47449:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5725,
                                                "mutability": "mutable",
                                                "name": "customAncillaryData",
                                                "nameLocation": "47488:19:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5905,
                                                "src": "47475:32:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 5724,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "47475:5:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "47357:156:14"
                                    },
                                    "returnParameters": {
                                        "id": 5729,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5728,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5905,
                                                "src": "47531:4:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 5727,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "47531:4:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "47530:6:14"
                                    },
                                    "scope": 5950,
                                    "src": "47326:3354:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "private"
                                },
                                {
                                    "body": {
                                        "id": 5944,
                                        "nodeType": "Block",
                                        "src": "50871:211:14",
                                        "statements": [
                                            {
                                                "condition": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "arguments": [
                                                                {
                                                                    "id": 5914,
                                                                    "name": "to",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 5907,
                                                                    "src": "50893:2:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address_payable",
                                                                        "typeString": "address payable"
                                                                    }
                                                                ],
                                                                "id": 5913,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "lValueRequested": false,
                                                                "nodeType": "ElementaryTypeNameExpression",
                                                                "src": "50885:7:14",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_type$_t_address_$",
                                                                    "typeString": "type(address)"
                                                                },
                                                                "typeName": {
                                                                    "id": 5912,
                                                                    "name": "address",
                                                                    "nodeType": "ElementaryTypeName",
                                                                    "src": "50885:7:14",
                                                                    "typeDescriptions": {}
                                                                }
                                                            },
                                                            "id": 5915,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "typeConversion",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "50885:11:14",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        },
                                                        "id": 5916,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "isContract",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 853,
                                                        "src": "50885:22:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                                                            "typeString": "function (address) view returns (bool)"
                                                        }
                                                    },
                                                    "id": 5917,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "50885:24:14",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "falseBody": {
                                                    "id": 5942,
                                                    "nodeType": "Block",
                                                    "src": "50974:102:14",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5933,
                                                                        "name": "amount",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5909,
                                                                        "src": "51025:6:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "arguments": [
                                                                            {
                                                                                "arguments": [
                                                                                    {
                                                                                        "id": 5929,
                                                                                        "name": "l1Token",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 3877,
                                                                                        "src": "51006:7:14",
                                                                                        "typeDescriptions": {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    }
                                                                                ],
                                                                                "expression": {
                                                                                    "argumentTypes": [
                                                                                        {
                                                                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                                                                            "typeString": "contract IERC20"
                                                                                        }
                                                                                    ],
                                                                                    "id": 5928,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "ElementaryTypeNameExpression",
                                                                                    "src": "50998:7:14",
                                                                                    "typeDescriptions": {
                                                                                        "typeIdentifier": "t_type$_t_address_$",
                                                                                        "typeString": "type(address)"
                                                                                    },
                                                                                    "typeName": {
                                                                                        "id": 5927,
                                                                                        "name": "address",
                                                                                        "nodeType": "ElementaryTypeName",
                                                                                        "src": "50998:7:14",
                                                                                        "typeDescriptions": {}
                                                                                    }
                                                                                },
                                                                                "id": 5930,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "kind": "typeConversion",
                                                                                "lValueRequested": false,
                                                                                "names": [],
                                                                                "nodeType": "FunctionCall",
                                                                                "src": "50998:16:14",
                                                                                "tryCall": false,
                                                                                "typeDescriptions": {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            }
                                                                        ],
                                                                        "expression": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "id": 5926,
                                                                            "name": "WETH9Like",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 3851,
                                                                            "src": "50988:9:14",
                                                                            "typeDescriptions": {
                                                                                "typeIdentifier": "t_type$_t_contract$_WETH9Like_$3851_$",
                                                                                "typeString": "type(contract WETH9Like)"
                                                                            }
                                                                        },
                                                                        "id": 5931,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "kind": "typeConversion",
                                                                        "lValueRequested": false,
                                                                        "names": [],
                                                                        "nodeType": "FunctionCall",
                                                                        "src": "50988:27:14",
                                                                        "tryCall": false,
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_WETH9Like_$3851",
                                                                            "typeString": "contract WETH9Like"
                                                                        }
                                                                    },
                                                                    "id": 5932,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "withdraw",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 3847,
                                                                    "src": "50988:36:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                                                        "typeString": "function (uint256) external"
                                                                    }
                                                                },
                                                                "id": 5934,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "50988:44:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 5935,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "50988:44:14"
                                                        },
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5939,
                                                                        "name": "amount",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5909,
                                                                        "src": "51058:6:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 5936,
                                                                        "name": "to",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5907,
                                                                        "src": "51046:2:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        }
                                                                    },
                                                                    "id": 5938,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "transfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "src": "51046:11:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                                                                        "typeString": "function (uint256)"
                                                                    }
                                                                },
                                                                "id": 5940,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "51046:19:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 5941,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "51046:19:14"
                                                        }
                                                    ]
                                                },
                                                "id": 5943,
                                                "nodeType": "IfStatement",
                                                "src": "50881:195:14",
                                                "trueBody": {
                                                    "id": 5925,
                                                    "nodeType": "Block",
                                                    "src": "50911:57:14",
                                                    "statements": [
                                                        {
                                                            "expression": {
                                                                "arguments": [
                                                                    {
                                                                        "id": 5921,
                                                                        "name": "to",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5907,
                                                                        "src": "50946:2:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        }
                                                                    },
                                                                    {
                                                                        "id": 5922,
                                                                        "name": "amount",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 5909,
                                                                        "src": "50950:6:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    }
                                                                ],
                                                                "expression": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address_payable",
                                                                            "typeString": "address payable"
                                                                        },
                                                                        {
                                                                            "typeIdentifier": "t_uint256",
                                                                            "typeString": "uint256"
                                                                        }
                                                                    ],
                                                                    "expression": {
                                                                        "id": 5918,
                                                                        "name": "l1Token",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 3877,
                                                                        "src": "50925:7:14",
                                                                        "typeDescriptions": {
                                                                            "typeIdentifier": "t_contract$_IERC20_$584",
                                                                            "typeString": "contract IERC20"
                                                                        }
                                                                    },
                                                                    "id": 5920,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "memberName": "safeTransfer",
                                                                    "nodeType": "MemberAccess",
                                                                    "referencedDeclaration": 640,
                                                                    "src": "50925:20:14",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$584_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$584_$",
                                                                        "typeString": "function (contract IERC20,address,uint256)"
                                                                    }
                                                                },
                                                                "id": 5923,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "kind": "functionCall",
                                                                "lValueRequested": false,
                                                                "names": [],
                                                                "nodeType": "FunctionCall",
                                                                "src": "50925:32:14",
                                                                "tryCall": false,
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_tuple$__$",
                                                                    "typeString": "tuple()"
                                                                }
                                                            },
                                                            "id": 5924,
                                                            "nodeType": "ExpressionStatement",
                                                            "src": "50925:32:14"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    },
                                    "id": 5945,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "_unwrapWETHTo",
                                    "nameLocation": "50812:13:14",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5910,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5907,
                                                "mutability": "mutable",
                                                "name": "to",
                                                "nameLocation": "50842:2:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5945,
                                                "src": "50826:18:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                "typeName": {
                                                    "id": 5906,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "50826:15:14",
                                                    "stateMutability": "payable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5909,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "50854:6:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5945,
                                                "src": "50846:14:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5908,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "50846:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "50825:36:14"
                                    },
                                    "returnParameters": {
                                        "id": 5911,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "50871:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "50803:279:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "internal"
                                },
                                {
                                    "body": {
                                        "id": 5948,
                                        "nodeType": "Block",
                                        "src": "51196:2:14",
                                        "statements": []
                                    },
                                    "id": 5949,
                                    "implemented": true,
                                    "kind": "receive",
                                    "modifiers": [],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5946,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "51176:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5947,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "51196:0:14"
                                    },
                                    "scope": 5950,
                                    "src": "51169:29:14",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 5992,
                            "src": "1647:49553:14",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [
                                {
                                    "baseName": {
                                        "id": 5952,
                                        "name": "BridgePool",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 5950,
                                        "src": "51532:10:14"
                                    },
                                    "id": 5953,
                                    "nodeType": "InheritanceSpecifier",
                                    "src": "51532:10:14"
                                }
                            ],
                            "canonicalName": "BridgePoolProd",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 5951,
                                "nodeType": "StructuredDocumentation",
                                "src": "51202:302:14",
                                "text": " @notice This is the BridgePool contract that should be deployed on live networks. It is exactly the same as the\n regular BridgePool contract, but it overrides getCurrentTime to make the call a simply return block.timestamp with\n no branching or storage queries. This is done to save gas."
                            },
                            "fullyImplemented": true,
                            "id": 5991,
                            "linearizedBaseContracts": [
                                5991,
                                5950,
                                3630,
                                506,
                                609,
                                584,
                                1152,
                                6134,
                                3790,
                                3717
                            ],
                            "name": "BridgePoolProd",
                            "nameLocation": "51514:14:14",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "body": {
                                        "id": 5979,
                                        "nodeType": "Block",
                                        "src": "51890:2:14",
                                        "statements": []
                                    },
                                    "id": 5980,
                                    "implemented": true,
                                    "kind": "constructor",
                                    "modifiers": [
                                        {
                                            "arguments": [
                                                {
                                                    "id": 5970,
                                                    "name": "_lpTokenName",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5955,
                                                    "src": "51794:12:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                    }
                                                },
                                                {
                                                    "id": 5971,
                                                    "name": "_lpTokenSymbol",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5957,
                                                    "src": "51808:14:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                    }
                                                },
                                                {
                                                    "id": 5972,
                                                    "name": "_bridgeAdmin",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5959,
                                                    "src": "51824:12:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "id": 5973,
                                                    "name": "_l1Token",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5961,
                                                    "src": "51838:8:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                {
                                                    "id": 5974,
                                                    "name": "_lpFeeRatePerSecond",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5963,
                                                    "src": "51848:19:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                {
                                                    "id": 5975,
                                                    "name": "_isWethPool",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5965,
                                                    "src": "51869:11:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                {
                                                    "id": 5976,
                                                    "name": "_timer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5967,
                                                    "src": "51882:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "id": 5977,
                                            "kind": "baseConstructorSpecifier",
                                            "modifierName": {
                                                "id": 5969,
                                                "name": "BridgePool",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 5950,
                                                "src": "51783:10:14"
                                            },
                                            "nodeType": "ModifierInvocation",
                                            "src": "51783:106:14"
                                        }
                                    ],
                                    "name": "",
                                    "nameLocation": "-1:-1:-1",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 5968,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5955,
                                                "mutability": "mutable",
                                                "name": "_lpTokenName",
                                                "nameLocation": "51584:12:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5980,
                                                "src": "51570:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 5954,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "51570:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5957,
                                                "mutability": "mutable",
                                                "name": "_lpTokenSymbol",
                                                "nameLocation": "51620:14:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5980,
                                                "src": "51606:28:14",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string"
                                                },
                                                "typeName": {
                                                    "id": 5956,
                                                    "name": "string",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "51606:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_string_storage_ptr",
                                                        "typeString": "string"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5959,
                                                "mutability": "mutable",
                                                "name": "_bridgeAdmin",
                                                "nameLocation": "51652:12:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5980,
                                                "src": "51644:20:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5958,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "51644:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5961,
                                                "mutability": "mutable",
                                                "name": "_l1Token",
                                                "nameLocation": "51682:8:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5980,
                                                "src": "51674:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5960,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "51674:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5963,
                                                "mutability": "mutable",
                                                "name": "_lpFeeRatePerSecond",
                                                "nameLocation": "51707:19:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5980,
                                                "src": "51700:26:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 5962,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "51700:6:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5965,
                                                "mutability": "mutable",
                                                "name": "_isWethPool",
                                                "nameLocation": "51741:11:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5980,
                                                "src": "51736:16:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 5964,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "51736:4:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5967,
                                                "mutability": "mutable",
                                                "name": "_timer",
                                                "nameLocation": "51770:6:14",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5980,
                                                "src": "51762:14:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5966,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "51762:7:14",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "51560:222:14"
                                    },
                                    "returnParameters": {
                                        "id": 5978,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "51890:0:14"
                                    },
                                    "scope": 5991,
                                    "src": "51549:343:14",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "public"
                                },
                                {
                                    "baseFunctions": [
                                        3789
                                    ],
                                    "body": {
                                        "id": 5989,
                                        "nodeType": "Block",
                                        "src": "51971:39:14",
                                        "statements": [
                                            {
                                                "expression": {
                                                    "expression": {
                                                        "id": 5986,
                                                        "name": "block",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -4,
                                                        "src": "51988:5:14",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_magic_block",
                                                            "typeString": "block"
                                                        }
                                                    },
                                                    "id": 5987,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "timestamp",
                                                    "nodeType": "MemberAccess",
                                                    "src": "51988:15:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 5985,
                                                "id": 5988,
                                                "nodeType": "Return",
                                                "src": "51981:22:14"
                                            }
                                        ]
                                    },
                                    "functionSelector": "29cb924d",
                                    "id": 5990,
                                    "implemented": true,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getCurrentTime",
                                    "nameLocation": "51907:14:14",
                                    "nodeType": "FunctionDefinition",
                                    "overrides": {
                                        "id": 5982,
                                        "nodeType": "OverrideSpecifier",
                                        "overrides": [],
                                        "src": "51944:8:14"
                                    },
                                    "parameters": {
                                        "id": 5981,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "51921:2:14"
                                    },
                                    "returnParameters": {
                                        "id": 5985,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5984,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 5990,
                                                "src": "51962:7:14",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5983,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "51962:7:14",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "51961:9:14"
                                    },
                                    "scope": 5991,
                                    "src": "51898:112:14",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 5992,
                            "src": "51505:507:14",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:51971:14"
                },
                "id": 14
            },
            "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/interfaces/BridgeAdminInterface.sol",
                    "exportedSymbols": {
                        "BridgeAdminInterface": [
                            6109
                        ]
                    },
                    "id": 6110,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 5993,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:15"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "BridgeAdminInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 5994,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:85:15",
                                "text": " @notice Helper view methods designed to be called by BridgePool contracts."
                            },
                            "fullyImplemented": false,
                            "id": 6109,
                            "linearizedBaseContracts": [
                                6109
                            ],
                            "name": "BridgeAdminInterface",
                            "nameLocation": "163:20:15",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "anonymous": false,
                                    "id": 6002,
                                    "name": "SetDepositContracts",
                                    "nameLocation": "196:19:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6001,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 5996,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "241:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6002,
                                                "src": "225:23:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 5995,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "225:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 5998,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2DepositContract",
                                                "nameLocation": "274:17:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6002,
                                                "src": "258:33:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5997,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "258:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6000,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2MessengerContract",
                                                "nameLocation": "317:19:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6002,
                                                "src": "301:35:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 5999,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "301:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "215:127:15"
                                    },
                                    "src": "190:153:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6008,
                                    "name": "SetCrossDomainAdmin",
                                    "nameLocation": "354:19:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6007,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6004,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "390:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6008,
                                                "src": "374:23:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6003,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "374:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6006,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "415:8:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6008,
                                                "src": "399:24:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6005,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "399:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "373:51:15"
                                    },
                                    "src": "348:77:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6012,
                                    "name": "SetRelayIdentifier",
                                    "nameLocation": "436:18:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6011,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6010,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "471:10:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6012,
                                                "src": "455:26:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6009,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "455:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "454:28:15"
                                    },
                                    "src": "430:53:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6016,
                                    "name": "SetOptimisticOracleLiveness",
                                    "nameLocation": "494:27:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6015,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6014,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "liveness",
                                                "nameLocation": "537:8:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6016,
                                                "src": "522:23:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6013,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "522:6:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "521:25:15"
                                    },
                                    "src": "488:59:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6020,
                                    "name": "SetProposerBondPct",
                                    "nameLocation": "558:18:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6019,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6018,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "proposerBondPct",
                                                "nameLocation": "592:15:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6020,
                                                "src": "577:30:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6017,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "577:6:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "576:32:15"
                                    },
                                    "src": "552:57:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6030,
                                    "name": "WhitelistToken",
                                    "nameLocation": "620:14:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6029,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6022,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "643:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6030,
                                                "src": "635:15:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6021,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "635:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6024,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l1Token",
                                                "nameLocation": "668:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6030,
                                                "src": "652:23:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6023,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "652:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6026,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "693:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6030,
                                                "src": "677:23:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6025,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "677:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6028,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "718:10:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6030,
                                                "src": "702:26:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6027,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "702:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "634:95:15"
                                    },
                                    "src": "614:116:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6036,
                                    "name": "SetMinimumBridgingDelay",
                                    "nameLocation": "741:23:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6035,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6032,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "781:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6036,
                                                "src": "765:23:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6031,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "765:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6034,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newMinimumBridgingDelay",
                                                "nameLocation": "797:23:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6036,
                                                "src": "790:30:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6033,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "790:6:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "764:57:15"
                                    },
                                    "src": "735:87:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6044,
                                    "name": "DepositsEnabled",
                                    "nameLocation": "833:15:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6043,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6038,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "chainId",
                                                "nameLocation": "865:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6044,
                                                "src": "849:23:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6037,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "849:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6040,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "890:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6044,
                                                "src": "874:23:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6039,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "874:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6042,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "depositsEnabled",
                                                "nameLocation": "904:15:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6044,
                                                "src": "899:20:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 6041,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "899:4:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "848:72:15"
                                    },
                                    "src": "827:94:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6051,
                                    "name": "BridgePoolsAdminTransferred",
                                    "nameLocation": "932:27:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6050,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6047,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "bridgePools",
                                                "nameLocation": "970:11:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6051,
                                                "src": "960:21:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                    "typeString": "address[]"
                                                },
                                                "typeName": {
                                                    "baseType": {
                                                        "id": 6045,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "960:7:15",
                                                        "stateMutability": "nonpayable",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    "id": 6046,
                                                    "nodeType": "ArrayTypeName",
                                                    "src": "960:9:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                                        "typeString": "address[]"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6049,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "999:8:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6051,
                                                "src": "983:24:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6048,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "983:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "959:49:15"
                                    },
                                    "src": "926:83:15"
                                },
                                {
                                    "anonymous": false,
                                    "id": 6057,
                                    "name": "SetLpFeeRate",
                                    "nameLocation": "1020:12:15",
                                    "nodeType": "EventDefinition",
                                    "parameters": {
                                        "id": 6056,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6053,
                                                "indexed": true,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "1049:10:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6057,
                                                "src": "1033:26:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6052,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1033:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6055,
                                                "indexed": false,
                                                "mutability": "mutable",
                                                "name": "newLpFeeRatePerSecond",
                                                "nameLocation": "1068:21:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6057,
                                                "src": "1061:28:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6054,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1061:6:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1032:58:15"
                                    },
                                    "src": "1014:77:15"
                                },
                                {
                                    "functionSelector": "b9a3c84c",
                                    "id": 6062,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "finder",
                                    "nameLocation": "1106:6:15",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6058,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1112:2:15"
                                    },
                                    "returnParameters": {
                                        "id": 6061,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6060,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6062,
                                                "src": "1138:7:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6059,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1138:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1137:9:15"
                                    },
                                    "scope": 6109,
                                    "src": "1097:50:15",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "canonicalName": "BridgeAdminInterface.DepositUtilityContracts",
                                    "id": 6067,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 6064,
                                            "mutability": "mutable",
                                            "name": "depositContract",
                                            "nameLocation": "1202:15:15",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6067,
                                            "src": "1194:23:15",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6063,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1194:7:15",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6066,
                                            "mutability": "mutable",
                                            "name": "messengerContract",
                                            "nameLocation": "1294:17:15",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6067,
                                            "src": "1286:25:15",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6065,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1286:7:15",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "DepositUtilityContracts",
                                    "nameLocation": "1160:23:15",
                                    "nodeType": "StructDefinition",
                                    "scope": 6109,
                                    "src": "1153:249:15",
                                    "visibility": "public"
                                },
                                {
                                    "functionSelector": "7eb4fa73",
                                    "id": 6075,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "depositContracts",
                                    "nameLocation": "1417:16:15",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6070,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6069,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6075,
                                                "src": "1434:7:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6068,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1434:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1433:9:15"
                                    },
                                    "returnParameters": {
                                        "id": 6074,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6073,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6075,
                                                "src": "1466:30:15",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_DepositUtilityContracts_$6067_memory_ptr",
                                                    "typeString": "struct BridgeAdminInterface.DepositUtilityContracts"
                                                },
                                                "typeName": {
                                                    "id": 6072,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6071,
                                                        "name": "DepositUtilityContracts",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6067,
                                                        "src": "1466:23:15"
                                                    },
                                                    "referencedDeclaration": 6067,
                                                    "src": "1466:23:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_DepositUtilityContracts_$6067_storage_ptr",
                                                        "typeString": "struct BridgeAdminInterface.DepositUtilityContracts"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1465:32:15"
                                    },
                                    "scope": 6109,
                                    "src": "1408:90:15",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "canonicalName": "BridgeAdminInterface.L1TokenRelationships",
                                    "id": 6082,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 6079,
                                            "mutability": "mutable",
                                            "name": "l2Tokens",
                                            "nameLocation": "1570:8:15",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6082,
                                            "src": "1542:36:15",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                                "typeString": "mapping(uint256 => address)"
                                            },
                                            "typeName": {
                                                "id": 6078,
                                                "keyType": {
                                                    "id": 6076,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1550:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "nodeType": "Mapping",
                                                "src": "1542:27:15",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                                    "typeString": "mapping(uint256 => address)"
                                                },
                                                "valueType": {
                                                    "id": 6077,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1561:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6081,
                                            "mutability": "mutable",
                                            "name": "bridgePool",
                                            "nameLocation": "1631:10:15",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6082,
                                            "src": "1623:18:15",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6080,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1623:7:15",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "L1TokenRelationships",
                                    "nameLocation": "1511:20:15",
                                    "nodeType": "StructDefinition",
                                    "scope": 6109,
                                    "src": "1504:144:15",
                                    "visibility": "public"
                                },
                                {
                                    "functionSelector": "bf06c19a",
                                    "id": 6093,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "whitelistedTokens",
                                    "nameLocation": "1663:17:15",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6087,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6084,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6093,
                                                "src": "1681:7:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6083,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1681:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6086,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6093,
                                                "src": "1690:7:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6085,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1690:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1680:18:15"
                                    },
                                    "returnParameters": {
                                        "id": 6092,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6089,
                                                "mutability": "mutable",
                                                "name": "l2Token",
                                                "nameLocation": "1730:7:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6093,
                                                "src": "1722:15:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6088,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1722:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6091,
                                                "mutability": "mutable",
                                                "name": "bridgePool",
                                                "nameLocation": "1747:10:15",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6093,
                                                "src": "1739:18:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6090,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1739:7:15",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1721:37:15"
                                    },
                                    "scope": 6109,
                                    "src": "1654:105:15",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "173684c5",
                                    "id": 6098,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "optimisticOracleLiveness",
                                    "nameLocation": "1774:24:15",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6094,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1798:2:15"
                                    },
                                    "returnParameters": {
                                        "id": 6097,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6096,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6098,
                                                "src": "1824:6:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6095,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1824:6:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1823:8:15"
                                    },
                                    "scope": 6109,
                                    "src": "1765:67:15",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "c73a32c3",
                                    "id": 6103,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposerBondPct",
                                    "nameLocation": "1847:15:15",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6099,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1862:2:15"
                                    },
                                    "returnParameters": {
                                        "id": 6102,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6101,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6103,
                                                "src": "1888:6:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6100,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1888:6:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1887:8:15"
                                    },
                                    "scope": 6109,
                                    "src": "1838:58:15",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "7998a1c4",
                                    "id": 6108,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "identifier",
                                    "nameLocation": "1911:10:15",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6104,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "1921:2:15"
                                    },
                                    "returnParameters": {
                                        "id": 6107,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6106,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6108,
                                                "src": "1947:7:15",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6105,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1947:7:15",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1946:9:15"
                                    },
                                    "scope": 6109,
                                    "src": "1902:54:15",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 6110,
                            "src": "153:1805:15",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1917:15"
                },
                "id": 15
            },
            "contracts/insured-bridge/interfaces/BridgePoolInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/insured-bridge/interfaces/BridgePoolInterface.sol",
                    "exportedSymbols": {
                        "BridgePoolInterface": [
                            6134
                        ],
                        "IERC20": [
                            584
                        ]
                    },
                    "id": 6135,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 6111,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:16"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 6112,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6135,
                            "sourceUnit": 585,
                            "src": "67:56:16",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "BridgePoolInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "fullyImplemented": false,
                            "id": 6134,
                            "linearizedBaseContracts": [
                                6134
                            ],
                            "name": "BridgePoolInterface",
                            "nameLocation": "135:19:16",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "functionSelector": "c01e1bd6",
                                    "id": 6118,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "l1Token",
                                    "nameLocation": "170:7:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6113,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "177:2:16"
                                    },
                                    "returnParameters": {
                                        "id": 6117,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6116,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6118,
                                                "src": "203:6:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 6115,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6114,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "203:6:16"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "203:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "202:8:16"
                                    },
                                    "scope": 6134,
                                    "src": "161:50:16",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "8f283970",
                                    "id": 6123,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "changeAdmin",
                                    "nameLocation": "226:11:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6121,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6120,
                                                "mutability": "mutable",
                                                "name": "newAdmin",
                                                "nameLocation": "246:8:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6123,
                                                "src": "238:16:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6119,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "238:7:16",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "237:18:16"
                                    },
                                    "returnParameters": {
                                        "id": 6122,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "264:0:16"
                                    },
                                    "scope": 6134,
                                    "src": "217:48:16",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "27f224ca",
                                    "id": 6128,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setLpFeeRatePerSecond",
                                    "nameLocation": "280:21:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6126,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6125,
                                                "mutability": "mutable",
                                                "name": "_newLpFeeRatePerSecond",
                                                "nameLocation": "309:22:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6128,
                                                "src": "302:29:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint64",
                                                    "typeString": "uint64"
                                                },
                                                "typeName": {
                                                    "id": 6124,
                                                    "name": "uint64",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "302:6:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint64",
                                                        "typeString": "uint64"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "301:31:16"
                                    },
                                    "returnParameters": {
                                        "id": 6127,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "341:0:16"
                                    },
                                    "scope": 6134,
                                    "src": "271:71:16",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "functionSelector": "08ed5b14",
                                    "id": 6133,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setRelaysEnabled",
                                    "nameLocation": "357:16:16",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6131,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6130,
                                                "mutability": "mutable",
                                                "name": "_relaysEnabled",
                                                "nameLocation": "379:14:16",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6133,
                                                "src": "374:19:16",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 6129,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "374:4:16",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "373:21:16"
                                    },
                                    "returnParameters": {
                                        "id": 6132,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "403:0:16"
                                    },
                                    "scope": 6134,
                                    "src": "348:56:16",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 6135,
                            "src": "125:281:16",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:365:16"
                },
                "id": 16
            },
            "contracts/oracle/implementation/Constants.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/implementation/Constants.sol",
                    "exportedSymbols": {
                        "OptimisticOracleConstraints": [
                            6173
                        ],
                        "OracleInterfaces": [
                            6168
                        ]
                    },
                    "id": 6174,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 6136,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:17"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "OracleInterfaces",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 6137,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:102:17",
                                "text": " @title Stores common interface names used throughout the DVM by registration in the Finder."
                            },
                            "fullyImplemented": true,
                            "id": 6168,
                            "linearizedBaseContracts": [
                                6168
                            ],
                            "name": "OracleInterfaces",
                            "nameLocation": "178:16:17",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": true,
                                    "functionSelector": "f24a534e",
                                    "id": 6140,
                                    "mutability": "constant",
                                    "name": "Oracle",
                                    "nameLocation": "225:6:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "201:41:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6138,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "201:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "4f7261636c65",
                                        "id": 6139,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "234:8:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_1a4461ab9f0dcef4a35a8660e8bbb361ae4c140fabb5b8c363bd6282ded34a90",
                                            "typeString": "literal_string \"Oracle\""
                                        },
                                        "value": "Oracle"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "4f4a180b",
                                    "id": 6143,
                                    "mutability": "constant",
                                    "name": "IdentifierWhitelist",
                                    "nameLocation": "272:19:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "248:67:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6141,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "248:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "4964656e74696669657257686974656c697374",
                                        "id": 6142,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "294:21:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_00d9d04470dd3fd336d150abd987b1b33f1c6b92e935259bb901f4c9ca28ddf4",
                                            "typeString": "literal_string \"IdentifierWhitelist\""
                                        },
                                        "value": "IdentifierWhitelist"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "42e90c33",
                                    "id": 6146,
                                    "mutability": "constant",
                                    "name": "Store",
                                    "nameLocation": "345:5:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "321:39:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6144,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "321:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "53746f7265",
                                        "id": 6145,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "353:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_f9742a6ab27efbeed38a3a36aac403fe0810a4cdb9e8328d15bdcd1c87e76672",
                                            "typeString": "literal_string \"Store\""
                                        },
                                        "value": "Store"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "2a71e5b3",
                                    "id": 6149,
                                    "mutability": "constant",
                                    "name": "FinancialContractsAdmin",
                                    "nameLocation": "390:23:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "366:75:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6147,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "366:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "46696e616e6369616c436f6e74726163747341646d696e",
                                        "id": 6148,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "416:25:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_bdecf6c7158bdf4679c9cd47427254674db861278f5aafe09a81927b0ddf85aa",
                                            "typeString": "literal_string \"FinancialContractsAdmin\""
                                        },
                                        "value": "FinancialContractsAdmin"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "7db9743b",
                                    "id": 6152,
                                    "mutability": "constant",
                                    "name": "Registry",
                                    "nameLocation": "471:8:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "447:45:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6150,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "447:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "5265676973747279",
                                        "id": 6151,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "482:10:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8c53ae70b0aa86068023c633abcdda89c433a8a76949ea111f756c171fa23663",
                                            "typeString": "literal_string \"Registry\""
                                        },
                                        "value": "Registry"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "598dd097",
                                    "id": 6155,
                                    "mutability": "constant",
                                    "name": "CollateralWhitelist",
                                    "nameLocation": "522:19:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "498:67:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6153,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "498:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "436f6c6c61746572616c57686974656c697374",
                                        "id": 6154,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "544:21:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_e9a52feae6648b39bfdb0a8523b0b3da0307731129fd6f0d46a73b43c2989f8f",
                                            "typeString": "literal_string \"CollateralWhitelist\""
                                        },
                                        "value": "CollateralWhitelist"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "1a4dbd1c",
                                    "id": 6158,
                                    "mutability": "constant",
                                    "name": "OptimisticOracle",
                                    "nameLocation": "595:16:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "571:61:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6156,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "571:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "4f7074696d69737469634f7261636c65",
                                        "id": 6157,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "614:18:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_1b7f4a3af71357fd741bc7828f83ec6c49403c71c1a6875664530cb681f8b070",
                                            "typeString": "literal_string \"OptimisticOracle\""
                                        },
                                        "value": "OptimisticOracle"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "5fa2ef10",
                                    "id": 6161,
                                    "mutability": "constant",
                                    "name": "Bridge",
                                    "nameLocation": "662:6:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "638:41:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6159,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "638:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "427269646765",
                                        "id": 6160,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "671:8:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_7aa5ae620294318af92bf4e2b2a729646c932a80312a5fa630da993a2ef5cc10",
                                            "typeString": "literal_string \"Bridge\""
                                        },
                                        "value": "Bridge"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "079b6c63",
                                    "id": 6164,
                                    "mutability": "constant",
                                    "name": "GenericHandler",
                                    "nameLocation": "709:14:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "685:57:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6162,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "685:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "47656e6572696348616e646c6572",
                                        "id": 6163,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "726:16:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_0c852b6e1eb3d094b8b7ec20be5fb44aea5686ca74f54e2589153de1c87b6302",
                                            "typeString": "literal_string \"GenericHandler\""
                                        },
                                        "value": "GenericHandler"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "4596ac9b",
                                    "id": 6167,
                                    "mutability": "constant",
                                    "name": "SkinnyOptimisticOracle",
                                    "nameLocation": "772:22:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6168,
                                    "src": "748:73:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                    },
                                    "typeName": {
                                        "id": 6165,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "748:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "536b696e6e794f7074696d69737469634f7261636c65",
                                        "id": 6166,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "797:24:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_5783227a49dac1b3d7d5d8e80d9d37463f506ddc1045b867688aa7568f7d856b",
                                            "typeString": "literal_string \"SkinnyOptimisticOracle\""
                                        },
                                        "value": "SkinnyOptimisticOracle"
                                    },
                                    "visibility": "public"
                                }
                            ],
                            "scope": 6174,
                            "src": "170:654:17",
                            "usedErrors": []
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "OptimisticOracleConstraints",
                            "contractDependencies": [],
                            "contractKind": "library",
                            "documentation": {
                                "id": 6169,
                                "nodeType": "StructuredDocumentation",
                                "src": "826:93:17",
                                "text": " @title Commonly re-used values for contracts associated with the OptimisticOracle."
                            },
                            "fullyImplemented": true,
                            "id": 6173,
                            "linearizedBaseContracts": [
                                6173
                            ],
                            "name": "OptimisticOracleConstraints",
                            "nameLocation": "928:27:17",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "constant": true,
                                    "functionSelector": "c371dda7",
                                    "id": 6172,
                                    "mutability": "constant",
                                    "name": "ancillaryBytesLimit",
                                    "nameLocation": "1422:19:17",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6173,
                                    "src": "1398:50:17",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6170,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1398:7:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "38313932",
                                        "id": 6171,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1444:4:17",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8192_by_1",
                                            "typeString": "int_const 8192"
                                        },
                                        "value": "8192"
                                    },
                                    "visibility": "public"
                                }
                            ],
                            "scope": 6174,
                            "src": "920:531:17",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:1410:17"
                },
                "id": 17
            },
            "contracts/oracle/interfaces/FinderInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/FinderInterface.sol",
                    "exportedSymbols": {
                        "FinderInterface": [
                            6193
                        ]
                    },
                    "id": 6194,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 6175,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:18"
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "FinderInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 6176,
                                "nodeType": "StructuredDocumentation",
                                "src": "67:144:18",
                                "text": " @title Provides addresses of the live contracts implementing certain interfaces.\n @dev Examples are the Oracle or Store interfaces."
                            },
                            "fullyImplemented": false,
                            "id": 6193,
                            "linearizedBaseContracts": [
                                6193
                            ],
                            "name": "FinderInterface",
                            "nameLocation": "222:15:18",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 6177,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "244:300:18",
                                        "text": " @notice Updates the address of the contract that implements `interfaceName`.\n @param interfaceName bytes32 encoding of the interface name that is either changed or registered.\n @param implementationAddress address of the deployed contract that implements the interface."
                                    },
                                    "functionSelector": "31f9665e",
                                    "id": 6184,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "changeImplementationAddress",
                                    "nameLocation": "558:27:18",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6182,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6179,
                                                "mutability": "mutable",
                                                "name": "interfaceName",
                                                "nameLocation": "594:13:18",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6184,
                                                "src": "586:21:18",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6178,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "586:7:18",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6181,
                                                "mutability": "mutable",
                                                "name": "implementationAddress",
                                                "nameLocation": "617:21:18",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6184,
                                                "src": "609:29:18",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6180,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "609:7:18",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "585:54:18"
                                    },
                                    "returnParameters": {
                                        "id": 6183,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "648:0:18"
                                    },
                                    "scope": 6193,
                                    "src": "549:100:18",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6185,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "655:250:18",
                                        "text": " @notice Gets the address of the contract that implements the given `interfaceName`.\n @param interfaceName queried interface.\n @return implementationAddress address of the deployed contract that implements the interface."
                                    },
                                    "functionSelector": "aafd5e40",
                                    "id": 6192,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getImplementationAddress",
                                    "nameLocation": "919:24:18",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6188,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6187,
                                                "mutability": "mutable",
                                                "name": "interfaceName",
                                                "nameLocation": "952:13:18",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6192,
                                                "src": "944:21:18",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6186,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "944:7:18",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "943:23:18"
                                    },
                                    "returnParameters": {
                                        "id": 6191,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6190,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6192,
                                                "src": "990:7:18",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6189,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "990:7:18",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "989:9:18"
                                    },
                                    "scope": 6193,
                                    "src": "910:89:18",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 6194,
                            "src": "212:789:18",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:960:18"
                },
                "id": 18
            },
            "contracts/oracle/interfaces/OptimisticOracleInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/OptimisticOracleInterface.sol",
                    "exportedSymbols": {
                        "IERC20": [
                            584
                        ],
                        "OptimisticOracleInterface": [
                            6431
                        ]
                    },
                    "id": 6432,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 6195,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:19"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 6196,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6432,
                            "sourceUnit": 585,
                            "src": "67:56:19",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "OptimisticOracleInterface",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 6197,
                                "nodeType": "StructuredDocumentation",
                                "src": "125:175:19",
                                "text": " @title Financial contract facing Oracle interface.\n @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface."
                            },
                            "fullyImplemented": false,
                            "id": 6431,
                            "linearizedBaseContracts": [
                                6431
                            ],
                            "name": "OptimisticOracleInterface",
                            "nameLocation": "319:25:19",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "canonicalName": "OptimisticOracleInterface.State",
                                    "id": 6205,
                                    "members": [
                                        {
                                            "id": 6198,
                                            "name": "Invalid",
                                            "nameLocation": "429:7:19",
                                            "nodeType": "EnumValue",
                                            "src": "429:7:19"
                                        },
                                        {
                                            "id": 6199,
                                            "name": "Requested",
                                            "nameLocation": "466:9:19",
                                            "nodeType": "EnumValue",
                                            "src": "466:9:19"
                                        },
                                        {
                                            "id": 6200,
                                            "name": "Proposed",
                                            "nameLocation": "523:8:19",
                                            "nodeType": "EnumValue",
                                            "src": "523:8:19"
                                        },
                                        {
                                            "id": 6201,
                                            "name": "Expired",
                                            "nameLocation": "587:7:19",
                                            "nodeType": "EnumValue",
                                            "src": "587:7:19"
                                        },
                                        {
                                            "id": 6202,
                                            "name": "Disputed",
                                            "nameLocation": "646:8:19",
                                            "nodeType": "EnumValue",
                                            "src": "646:8:19"
                                        },
                                        {
                                            "id": 6203,
                                            "name": "Resolved",
                                            "nameLocation": "708:8:19",
                                            "nodeType": "EnumValue",
                                            "src": "708:8:19"
                                        },
                                        {
                                            "id": 6204,
                                            "name": "Settled",
                                            "nameLocation": "766:7:19",
                                            "nodeType": "EnumValue",
                                            "src": "766:7:19"
                                        }
                                    ],
                                    "name": "State",
                                    "nameLocation": "413:5:19",
                                    "nodeType": "EnumDefinition",
                                    "src": "408:456:19"
                                },
                                {
                                    "canonicalName": "OptimisticOracleInterface.Request",
                                    "id": 6231,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 6207,
                                            "mutability": "mutable",
                                            "name": "proposer",
                                            "nameLocation": "947:8:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "939:16:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6206,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "939:7:19",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6209,
                                            "mutability": "mutable",
                                            "name": "disputer",
                                            "nameLocation": "1001:8:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "993:16:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6208,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "993:7:19",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6212,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "nameLocation": "1054:8:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1047:15:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 6211,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 6210,
                                                    "name": "IERC20",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 584,
                                                    "src": "1047:6:19"
                                                },
                                                "referencedDeclaration": 584,
                                                "src": "1047:6:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6214,
                                            "mutability": "mutable",
                                            "name": "settled",
                                            "nameLocation": "1122:7:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1117:12:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 6213,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1117:4:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6216,
                                            "mutability": "mutable",
                                            "name": "refundOnDispute",
                                            "nameLocation": "1179:15:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1174:20:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 6215,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1174:4:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6218,
                                            "mutability": "mutable",
                                            "name": "proposedPrice",
                                            "nameLocation": "1280:13:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1273:20:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 6217,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1273:6:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6220,
                                            "mutability": "mutable",
                                            "name": "resolvedPrice",
                                            "nameLocation": "1348:13:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1341:20:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 6219,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1341:6:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6222,
                                            "mutability": "mutable",
                                            "name": "expirationTime",
                                            "nameLocation": "1426:14:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1418:22:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6221,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1418:7:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6224,
                                            "mutability": "mutable",
                                            "name": "reward",
                                            "nameLocation": "1519:6:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1511:14:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6223,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1511:7:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6226,
                                            "mutability": "mutable",
                                            "name": "finalFee",
                                            "nameLocation": "1607:8:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1599:16:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6225,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1599:7:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6228,
                                            "mutability": "mutable",
                                            "name": "bond",
                                            "nameLocation": "1691:4:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1683:12:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6227,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1683:7:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6230,
                                            "mutability": "mutable",
                                            "name": "customLiveness",
                                            "nameLocation": "1786:14:19",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6231,
                                            "src": "1778:22:19",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6229,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1778:7:19",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Request",
                                    "nameLocation": "921:7:19",
                                    "nodeType": "StructDefinition",
                                    "scope": 6431,
                                    "src": "914:940:19",
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "c371dda7",
                                    "id": 6234,
                                    "mutability": "constant",
                                    "name": "ancillaryBytesLimit",
                                    "nameLocation": "2189:19:19",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6431,
                                    "src": "2165:50:19",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6232,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2165:7:19",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "38313932",
                                        "id": 6233,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2211:4:19",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8192_by_1",
                                            "typeString": "int_const 8192"
                                        },
                                        "value": "8192"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6235,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2222:854:19",
                                        "text": " @notice Requests a new price.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data representing additional args being passed with the price request.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n               which could make sense if the contract requests and proposes the value in the same call or\n               provides its own reward system.\n @return totalBond default bond (final fee) + final fee that the proposer and disputer will be required to pay.\n This can be changed with a subsequent call to setBond()."
                                    },
                                    "functionSelector": "11df92f1",
                                    "id": 6251,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "requestPrice",
                                    "nameLocation": "3090:12:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6247,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6237,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "3120:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6251,
                                                "src": "3112:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6236,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3112:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6239,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "3148:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6251,
                                                "src": "3140:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6238,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3140:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6241,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "3180:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6251,
                                                "src": "3167:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6240,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3167:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6244,
                                                "mutability": "mutable",
                                                "name": "currency",
                                                "nameLocation": "3210:8:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6251,
                                                "src": "3203:15:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 6243,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6242,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "3203:6:19"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "3203:6:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6246,
                                                "mutability": "mutable",
                                                "name": "reward",
                                                "nameLocation": "3236:6:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6251,
                                                "src": "3228:14:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6245,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3228:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3102:146:19"
                                    },
                                    "returnParameters": {
                                        "id": 6250,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6249,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "3283:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6251,
                                                "src": "3275:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6248,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3275:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3274:19:19"
                                    },
                                    "scope": 6431,
                                    "src": "3081:213:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6252,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "3300:516:19",
                                        "text": " @notice Set the proposal bond associated with a price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param bond custom bond amount to set.\n @return totalBond new bond + final fee that the proposer and disputer will be required to pay. This can be\n changed again with a subsequent call to setBond()."
                                    },
                                    "functionSelector": "ad5a755a",
                                    "id": 6265,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setBond",
                                    "nameLocation": "3830:7:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6261,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6254,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "3855:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6265,
                                                "src": "3847:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6253,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3847:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6256,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "3883:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6265,
                                                "src": "3875:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6255,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3875:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6258,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "3915:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6265,
                                                "src": "3902:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6257,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3902:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6260,
                                                "mutability": "mutable",
                                                "name": "bond",
                                                "nameLocation": "3946:4:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6265,
                                                "src": "3938:12:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6259,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3938:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3837:119:19"
                                    },
                                    "returnParameters": {
                                        "id": 6264,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6263,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "3991:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6265,
                                                "src": "3983:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6262,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3983:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3982:19:19"
                                    },
                                    "scope": 6431,
                                    "src": "3821:181:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6266,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4008:545:19",
                                        "text": " @notice Sets the request to refund the reward if the proposal is disputed. This can help to \"hedge\" the caller\n in the event of a dispute-caused delay. Note: in the event of a dispute, the winner still receives the other's\n bond, so there is still profit to be made even if the reward is refunded.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested."
                                    },
                                    "functionSelector": "91f58dcb",
                                    "id": 6275,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setRefundOnDispute",
                                    "nameLocation": "4567:18:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6273,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6268,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "4603:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6275,
                                                "src": "4595:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6267,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4595:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6270,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "4631:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6275,
                                                "src": "4623:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6269,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4623:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6272,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "4663:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6275,
                                                "src": "4650:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6271,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4650:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4585:97:19"
                                    },
                                    "returnParameters": {
                                        "id": 6274,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "4699:0:19"
                                    },
                                    "scope": 6431,
                                    "src": "4558:142:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6276,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4706:426:19",
                                        "text": " @notice Sets a custom liveness value for the request. Liveness is the amount of time a proposal must wait before\n being auto-resolved.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param customLiveness new custom liveness."
                                    },
                                    "functionSelector": "473c45fe",
                                    "id": 6287,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "setCustomLiveness",
                                    "nameLocation": "5146:17:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6285,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6278,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "5181:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6287,
                                                "src": "5173:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6277,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5173:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6280,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "5209:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6287,
                                                "src": "5201:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6279,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5201:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6282,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "5241:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6287,
                                                "src": "5228:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6281,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5228:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6284,
                                                "mutability": "mutable",
                                                "name": "customLiveness",
                                                "nameLocation": "5272:14:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6287,
                                                "src": "5264:22:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6283,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5264:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5163:129:19"
                                    },
                                    "returnParameters": {
                                        "id": 6286,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "5309:0:19"
                                    },
                                    "scope": 6431,
                                    "src": "5137:173:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6288,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5316:764:19",
                                        "text": " @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n from this proposal. However, any bonds are pulled from the caller.\n @param proposer address to set as the proposer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "7c82288f",
                                    "id": 6305,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposePriceFor",
                                    "nameLocation": "6094:15:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6301,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6290,
                                                "mutability": "mutable",
                                                "name": "proposer",
                                                "nameLocation": "6127:8:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6305,
                                                "src": "6119:16:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6289,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6119:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6292,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "6153:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6305,
                                                "src": "6145:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6291,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6145:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6294,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "6180:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6305,
                                                "src": "6172:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6293,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6172:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6296,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "6208:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6305,
                                                "src": "6200:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6295,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6200:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6298,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "6240:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6305,
                                                "src": "6227:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6297,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6227:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6300,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "6270:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6305,
                                                "src": "6263:20:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 6299,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6263:6:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6109:180:19"
                                    },
                                    "returnParameters": {
                                        "id": 6304,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6303,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "6322:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6305,
                                                "src": "6314:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6302,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6314:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6313:19:19"
                                    },
                                    "scope": 6431,
                                    "src": "6085:248:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6306,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6339:586:19",
                                        "text": " @notice Proposes a price value for an existing price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the proposer's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "b8b4f908",
                                    "id": 6321,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposePrice",
                                    "nameLocation": "6939:12:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6317,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6308,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "6969:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6321,
                                                "src": "6961:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6307,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6961:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6310,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "6996:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6321,
                                                "src": "6988:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6309,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6988:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6312,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "7024:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6321,
                                                "src": "7016:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6311,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7016:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6314,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "7056:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6321,
                                                "src": "7043:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6313,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7043:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6316,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "7086:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6321,
                                                "src": "7079:20:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 6315,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7079:6:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6951:154:19"
                                    },
                                    "returnParameters": {
                                        "id": 6320,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6319,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "7140:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6321,
                                                "src": "7132:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6318,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7132:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7131:19:19"
                                    },
                                    "scope": 6431,
                                    "src": "6930:221:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6322,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "7157:766:19",
                                        "text": " @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n @param disputer address to set as the disputer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was value (the proposal was incorrect)."
                                    },
                                    "functionSelector": "76c7823f",
                                    "id": 6337,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "disputePriceFor",
                                    "nameLocation": "7937:15:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6333,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6324,
                                                "mutability": "mutable",
                                                "name": "disputer",
                                                "nameLocation": "7970:8:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6337,
                                                "src": "7962:16:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6323,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7962:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6326,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "7996:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6337,
                                                "src": "7988:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6325,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7988:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6328,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "8023:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6337,
                                                "src": "8015:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6327,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8015:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6330,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "8051:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6337,
                                                "src": "8043:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6329,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8043:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6332,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "8083:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6337,
                                                "src": "8070:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6331,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8070:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7952:150:19"
                                    },
                                    "returnParameters": {
                                        "id": 6336,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6335,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "8135:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6337,
                                                "src": "8127:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6334,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8127:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8126:19:19"
                                    },
                                    "scope": 6431,
                                    "src": "7928:218:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6338,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8152:587:19",
                                        "text": " @notice Disputes a price value for an existing price request with an active proposal.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return totalBond the amount that's pulled from the disputer's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                    },
                                    "functionSelector": "fba7f1e3",
                                    "id": 6351,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "disputePrice",
                                    "nameLocation": "8753:12:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6347,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6340,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "8783:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6351,
                                                "src": "8775:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6339,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8775:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6342,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "8810:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6351,
                                                "src": "8802:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6341,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8802:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6344,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "8838:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6351,
                                                "src": "8830:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6343,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8830:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6346,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "8870:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6351,
                                                "src": "8857:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6345,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8857:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8765:124:19"
                                    },
                                    "returnParameters": {
                                        "id": 6350,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6349,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "8924:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6351,
                                                "src": "8916:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6348,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8916:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8915:19:19"
                                    },
                                    "scope": 6431,
                                    "src": "8744:191:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6352,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8941:515:19",
                                        "text": " @notice Retrieves a price that was previously requested by a caller. Reverts if the request is not settled\n or settleable. Note: this method is not view so that this call may actually settle the price request if it\n hasn't been settled.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return resolved price."
                                    },
                                    "functionSelector": "53b59239",
                                    "id": 6363,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "settleAndGetPrice",
                                    "nameLocation": "9470:17:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6359,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6354,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "9505:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6363,
                                                "src": "9497:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6353,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9497:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6356,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "9533:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6363,
                                                "src": "9525:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6355,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9525:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6358,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "9565:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6363,
                                                "src": "9552:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6357,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9552:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9487:97:19"
                                    },
                                    "returnParameters": {
                                        "id": 6362,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6361,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6363,
                                                "src": "9611:6:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 6360,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9611:6:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9610:8:19"
                                    },
                                    "scope": 6431,
                                    "src": "9461:158:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6364,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9625:565:19",
                                        "text": " @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n the returned bonds as well as additional rewards."
                                    },
                                    "functionSelector": "5e9a79a9",
                                    "id": 6377,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "settle",
                                    "nameLocation": "10204:6:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6373,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6366,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "10228:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6377,
                                                "src": "10220:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6365,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10220:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6368,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "10255:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6377,
                                                "src": "10247:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6367,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10247:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6370,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "10283:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6377,
                                                "src": "10275:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6369,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10275:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6372,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "10315:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6377,
                                                "src": "10302:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6371,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10302:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10210:124:19"
                                    },
                                    "returnParameters": {
                                        "id": 6376,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6375,
                                                "mutability": "mutable",
                                                "name": "payout",
                                                "nameLocation": "10369:6:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6377,
                                                "src": "10361:14:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6374,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10361:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10360:16:19"
                                    },
                                    "scope": 6431,
                                    "src": "10195:182:19",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6378,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10383:429:19",
                                        "text": " @notice Gets the current data structure containing all information about a price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return the Request data structure."
                                    },
                                    "functionSelector": "a9904f9b",
                                    "id": 6392,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getRequest",
                                    "nameLocation": "10826:10:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6387,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6380,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "10854:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6392,
                                                "src": "10846:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6379,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10846:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6382,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "10881:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6392,
                                                "src": "10873:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6381,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10873:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6384,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "10909:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6392,
                                                "src": "10901:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6383,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10901:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6386,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "10941:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6392,
                                                "src": "10928:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6385,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10928:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10836:124:19"
                                    },
                                    "returnParameters": {
                                        "id": 6391,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6390,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6392,
                                                "src": "10990:14:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$6231_memory_ptr",
                                                    "typeString": "struct OptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 6389,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6388,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6231,
                                                        "src": "10990:7:19"
                                                    },
                                                    "referencedDeclaration": 6231,
                                                    "src": "10990:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6231_storage_ptr",
                                                        "typeString": "struct OptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10989:16:19"
                                    },
                                    "scope": 6431,
                                    "src": "10817:189:19",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6393,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11012:379:19",
                                        "text": " @notice Returns the state of a price request.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return the State enum value."
                                    },
                                    "functionSelector": "ba4b930c",
                                    "id": 6407,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getState",
                                    "nameLocation": "11405:8:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6402,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6395,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "11431:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6407,
                                                "src": "11423:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6394,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11423:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6397,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "11458:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6407,
                                                "src": "11450:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6396,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11450:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6399,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "11486:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6407,
                                                "src": "11478:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6398,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11478:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6401,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "11518:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6407,
                                                "src": "11505:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6400,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11505:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11413:124:19"
                                    },
                                    "returnParameters": {
                                        "id": 6406,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6405,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6407,
                                                "src": "11567:5:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_State_$6205",
                                                    "typeString": "enum OptimisticOracleInterface.State"
                                                },
                                                "typeName": {
                                                    "id": 6404,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6403,
                                                        "name": "State",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6205,
                                                        "src": "11567:5:19"
                                                    },
                                                    "referencedDeclaration": 6205,
                                                    "src": "11567:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_State_$6205",
                                                        "typeString": "enum OptimisticOracleInterface.State"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11566:7:19"
                                    },
                                    "scope": 6431,
                                    "src": "11396:178:19",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6408,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11580:471:19",
                                        "text": " @notice Checks if a given request has resolved or been settled (i.e the optimistic oracle has a price).\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @return true if price has resolved or settled, false otherwise."
                                    },
                                    "functionSelector": "bc58ccaa",
                                    "id": 6421,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "hasPrice",
                                    "nameLocation": "12065:8:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6417,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6410,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "12091:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6421,
                                                "src": "12083:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6409,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12083:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6412,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "12118:10:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6421,
                                                "src": "12110:18:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6411,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12110:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6414,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "12146:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6421,
                                                "src": "12138:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6413,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12138:7:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6416,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "12178:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6421,
                                                "src": "12165:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6415,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12165:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12073:124:19"
                                    },
                                    "returnParameters": {
                                        "id": 6420,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6419,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6421,
                                                "src": "12227:4:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 6418,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12227:4:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12226:6:19"
                                    },
                                    "scope": 6431,
                                    "src": "12056:177:19",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "functionSelector": "af5d2f39",
                                    "id": 6430,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "stampAncillaryData",
                                    "nameLocation": "12248:18:19",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6426,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6423,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "12280:13:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6430,
                                                "src": "12267:26:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6422,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12267:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6425,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "12303:9:19",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6430,
                                                "src": "12295:17:19",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6424,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12295:7:19",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12266:47:19"
                                    },
                                    "returnParameters": {
                                        "id": 6429,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6428,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6430,
                                                "src": "12375:12:19",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6427,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12375:5:19",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12374:14:19"
                                    },
                                    "scope": 6431,
                                    "src": "12239:150:19",
                                    "stateMutability": "view",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 6432,
                            "src": "301:12090:19",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:12350:19"
                },
                "id": 19
            },
            "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/SkinnyOptimisticOracleInterface.sol",
                    "exportedSymbols": {
                        "IERC20": [
                            584
                        ],
                        "OptimisticOracleInterface": [
                            6431
                        ],
                        "SkinnyOptimisticOracleInterface": [
                            6650
                        ]
                    },
                    "id": 6651,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 6433,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:20"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 6434,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6651,
                            "sourceUnit": 585,
                            "src": "67:56:20",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/oracle/interfaces/OptimisticOracleInterface.sol",
                            "file": "../interfaces/OptimisticOracleInterface.sol",
                            "id": 6435,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6651,
                            "sourceUnit": 6432,
                            "src": "124:53:20",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": true,
                            "baseContracts": [],
                            "canonicalName": "SkinnyOptimisticOracleInterface",
                            "contractDependencies": [],
                            "contractKind": "contract",
                            "documentation": {
                                "id": 6436,
                                "nodeType": "StructuredDocumentation",
                                "src": "179:1208:20",
                                "text": " @title Interface for the gas-cost-reduced version of the OptimisticOracle.\n @notice Differences from normal OptimisticOracle:\n - refundOnDispute: flag is removed, by default there are no refunds on disputes.\n - customizing request parameters: In the OptimisticOracle, parameters like `bond` and `customLiveness` can be reset\n   after a request is already made via `requestPrice`. In the SkinnyOptimisticOracle, these parameters can only be\n   set in `requestPrice`, which has an expanded input set.\n - settleAndGetPrice: Replaced by `settle`, which can only be called once per settleable request. The resolved price\n   can be fetched via the `Settle` event or the return value of `settle`.\n - general changes to interface: Functions that interact with existing requests all require the parameters of the\n   request to modify to be passed as input. These parameters must match with the existing request parameters or the\n   function will revert. This change reflects the internal refactor to store hashed request parameters instead of the\n   full request struct.\n @dev Interface used by financial contracts to interact with the Oracle. Voters will use a different interface."
                            },
                            "fullyImplemented": false,
                            "id": 6650,
                            "linearizedBaseContracts": [
                                6650
                            ],
                            "name": "SkinnyOptimisticOracleInterface",
                            "nameLocation": "1406:31:20",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "canonicalName": "SkinnyOptimisticOracleInterface.Request",
                                    "id": 6460,
                                    "members": [
                                        {
                                            "constant": false,
                                            "id": 6438,
                                            "mutability": "mutable",
                                            "name": "proposer",
                                            "nameLocation": "1639:8:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "1631:16:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6437,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1631:7:20",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6440,
                                            "mutability": "mutable",
                                            "name": "disputer",
                                            "nameLocation": "1693:8:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "1685:16:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            },
                                            "typeName": {
                                                "id": 6439,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1685:7:20",
                                                "stateMutability": "nonpayable",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6443,
                                            "mutability": "mutable",
                                            "name": "currency",
                                            "nameLocation": "1746:8:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "1739:15:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC20_$584",
                                                "typeString": "contract IERC20"
                                            },
                                            "typeName": {
                                                "id": 6442,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                    "id": 6441,
                                                    "name": "IERC20",
                                                    "nodeType": "IdentifierPath",
                                                    "referencedDeclaration": 584,
                                                    "src": "1739:6:20"
                                                },
                                                "referencedDeclaration": 584,
                                                "src": "1739:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6445,
                                            "mutability": "mutable",
                                            "name": "settled",
                                            "nameLocation": "1814:7:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "1809:12:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            },
                                            "typeName": {
                                                "id": 6444,
                                                "name": "bool",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1809:4:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6447,
                                            "mutability": "mutable",
                                            "name": "proposedPrice",
                                            "nameLocation": "1873:13:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "1866:20:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 6446,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1866:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6449,
                                            "mutability": "mutable",
                                            "name": "resolvedPrice",
                                            "nameLocation": "1941:13:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "1934:20:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                            },
                                            "typeName": {
                                                "id": 6448,
                                                "name": "int256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1934:6:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6451,
                                            "mutability": "mutable",
                                            "name": "expirationTime",
                                            "nameLocation": "2019:14:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "2011:22:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6450,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2011:7:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6453,
                                            "mutability": "mutable",
                                            "name": "reward",
                                            "nameLocation": "2112:6:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "2104:14:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6452,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2104:7:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6455,
                                            "mutability": "mutable",
                                            "name": "finalFee",
                                            "nameLocation": "2200:8:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "2192:16:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6454,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2192:7:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6457,
                                            "mutability": "mutable",
                                            "name": "bond",
                                            "nameLocation": "2284:4:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "2276:12:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6456,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2276:7:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        },
                                        {
                                            "constant": false,
                                            "id": 6459,
                                            "mutability": "mutable",
                                            "name": "customLiveness",
                                            "nameLocation": "2379:14:20",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6460,
                                            "src": "2371:22:20",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            },
                                            "typeName": {
                                                "id": 6458,
                                                "name": "uint256",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "2371:7:20",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "name": "Request",
                                    "nameLocation": "1613:7:20",
                                    "nodeType": "StructDefinition",
                                    "scope": 6650,
                                    "src": "1606:841:20",
                                    "visibility": "public"
                                },
                                {
                                    "constant": true,
                                    "functionSelector": "c371dda7",
                                    "id": 6463,
                                    "mutability": "constant",
                                    "name": "ancillaryBytesLimit",
                                    "nameLocation": "2782:19:20",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6650,
                                    "src": "2758:50:20",
                                    "stateVariable": true,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 6461,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2758:7:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "value": {
                                        "hexValue": "38313932",
                                        "id": 6462,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2804:4:20",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_8192_by_1",
                                            "typeString": "int_const 8192"
                                        },
                                        "value": "8192"
                                    },
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6464,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "2815:952:20",
                                        "text": " @notice Requests a new price.\n @param identifier price identifier being requested.\n @param timestamp timestamp of the price being requested.\n @param ancillaryData ancillary data representing additional args being passed with the price request.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n               which could make sense if the contract requests and proposes the value in the same call or\n               provides its own reward system.\n @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\n @param customLiveness custom proposal liveness to set for request.\n @return totalBond default bond + final fee that the proposer and disputer will be required to pay."
                                    },
                                    "functionSelector": "d6228407",
                                    "id": 6484,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "requestPrice",
                                    "nameLocation": "3781:12:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6480,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6466,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "3811:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6484,
                                                "src": "3803:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6465,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3803:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6468,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "3838:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6484,
                                                "src": "3831:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6467,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3831:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6470,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "3870:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6484,
                                                "src": "3857:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6469,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3857:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6473,
                                                "mutability": "mutable",
                                                "name": "currency",
                                                "nameLocation": "3900:8:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6484,
                                                "src": "3893:15:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 6472,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6471,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "3893:6:20"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "3893:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6475,
                                                "mutability": "mutable",
                                                "name": "reward",
                                                "nameLocation": "3926:6:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6484,
                                                "src": "3918:14:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6474,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3918:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6477,
                                                "mutability": "mutable",
                                                "name": "bond",
                                                "nameLocation": "3950:4:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6484,
                                                "src": "3942:12:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6476,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3942:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6479,
                                                "mutability": "mutable",
                                                "name": "customLiveness",
                                                "nameLocation": "3972:14:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6484,
                                                "src": "3964:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6478,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3964:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "3793:199:20"
                                    },
                                    "returnParameters": {
                                        "id": 6483,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6482,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "4027:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6484,
                                                "src": "4019:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6481,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4019:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4018:19:20"
                                    },
                                    "scope": 6650,
                                    "src": "3772:266:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6485,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "4044:898:20",
                                        "text": " @notice Proposes a price value on another address' behalf. Note: this address will receive any rewards that come\n from this proposal. However, any bonds are pulled from the caller.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n propose a price for.\n @param proposer address to set as the proposer.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "b1a166b2",
                                    "id": 6505,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposePriceFor",
                                    "nameLocation": "4956:15:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6501,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6487,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "4989:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6505,
                                                "src": "4981:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6486,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "4981:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6489,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "5016:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6505,
                                                "src": "5008:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6488,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5008:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6491,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "5043:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6505,
                                                "src": "5036:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6490,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5036:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6493,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "5075:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6505,
                                                "src": "5062:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6492,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5062:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6496,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "5113:7:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6505,
                                                "src": "5098:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 6495,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6494,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6460,
                                                        "src": "5098:7:20"
                                                    },
                                                    "referencedDeclaration": 6460,
                                                    "src": "5098:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6460_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6498,
                                                "mutability": "mutable",
                                                "name": "proposer",
                                                "nameLocation": "5138:8:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6505,
                                                "src": "5130:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6497,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5130:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6500,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "5163:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6505,
                                                "src": "5156:20:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 6499,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5156:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "4971:211:20"
                                    },
                                    "returnParameters": {
                                        "id": 6504,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6503,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "5215:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6505,
                                                "src": "5207:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6502,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5207:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5206:19:20"
                                    },
                                    "scope": 6650,
                                    "src": "4947:279:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6506,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "5232:717:20",
                                        "text": " @notice Proposes a price value where caller is the proposer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n propose a price for.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "93c44ef7",
                                    "id": 6524,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "proposePrice",
                                    "nameLocation": "5963:12:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6520,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6508,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "5993:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6524,
                                                "src": "5985:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6507,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "5985:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6510,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "6020:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6524,
                                                "src": "6012:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6509,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6012:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6512,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "6047:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6524,
                                                "src": "6040:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6511,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6040:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6514,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "6079:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6524,
                                                "src": "6066:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6513,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6066:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6517,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "6117:7:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6524,
                                                "src": "6102:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 6516,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6515,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6460,
                                                        "src": "6102:7:20"
                                                    },
                                                    "referencedDeclaration": 6460,
                                                    "src": "6102:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6460_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6519,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "6141:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6524,
                                                "src": "6134:20:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 6518,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6134:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "5975:185:20"
                                    },
                                    "returnParameters": {
                                        "id": 6523,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6522,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "6195:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6524,
                                                "src": "6187:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6521,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "6187:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "6186:19:20"
                                    },
                                    "scope": 6650,
                                    "src": "5954:252:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6525,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "6212:1498:20",
                                        "text": " @notice Combines logic of requestPrice and proposePrice while taking advantage of gas savings from not having to\n overwrite Request params that a normal requestPrice() => proposePrice() flow would entail. Note: The proposer\n will receive any rewards that come from this proposal. However, any bonds are pulled from the caller.\n @dev The caller is the requester, but the proposer can be customized.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param currency ERC20 token used for payment of rewards and fees. Must be approved for use with the DVM.\n @param reward reward offered to a successful proposer. Will be pulled from the caller. Note: this can be 0,\n               which could make sense if the contract requests and proposes the value in the same call or\n               provides its own reward system.\n @param bond custom proposal bond to set for request. If set to 0, defaults to the final fee.\n @param customLiveness custom proposal liveness to set for request.\n @param proposer address to set as the proposer.\n @param proposedPrice price being proposed.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the proposer once settled if the proposal is correct."
                                    },
                                    "functionSelector": "af355d1e",
                                    "id": 6549,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "requestAndProposePriceFor",
                                    "nameLocation": "7724:25:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6545,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6527,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "7767:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7759:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6526,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7759:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6529,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "7794:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7787:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6528,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7787:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6531,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "7826:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7813:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6530,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7813:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6534,
                                                "mutability": "mutable",
                                                "name": "currency",
                                                "nameLocation": "7856:8:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7849:15:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC20_$584",
                                                    "typeString": "contract IERC20"
                                                },
                                                "typeName": {
                                                    "id": 6533,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6532,
                                                        "name": "IERC20",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 584,
                                                        "src": "7849:6:20"
                                                    },
                                                    "referencedDeclaration": 584,
                                                    "src": "7849:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_IERC20_$584",
                                                        "typeString": "contract IERC20"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6536,
                                                "mutability": "mutable",
                                                "name": "reward",
                                                "nameLocation": "7882:6:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7874:14:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6535,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7874:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6538,
                                                "mutability": "mutable",
                                                "name": "bond",
                                                "nameLocation": "7906:4:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7898:12:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6537,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7898:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6540,
                                                "mutability": "mutable",
                                                "name": "customLiveness",
                                                "nameLocation": "7928:14:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7920:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6539,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7920:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6542,
                                                "mutability": "mutable",
                                                "name": "proposer",
                                                "nameLocation": "7960:8:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7952:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6541,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7952:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6544,
                                                "mutability": "mutable",
                                                "name": "proposedPrice",
                                                "nameLocation": "7985:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "7978:20:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 6543,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7978:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "7749:255:20"
                                    },
                                    "returnParameters": {
                                        "id": 6548,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6547,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "8039:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6549,
                                                "src": "8031:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6546,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8031:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8030:19:20"
                                    },
                                    "scope": 6650,
                                    "src": "7715:335:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6550,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "8056:888:20",
                                        "text": " @notice Disputes a price request with an active proposal on another address' behalf. Note: this address will\n receive any rewards that come from this dispute. However, any bonds are pulled from the caller.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n dispute.\n @param disputer address to set as the disputer.\n @param requester sender of the initial price request.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                    },
                                    "functionSelector": "9ce320c8",
                                    "id": 6568,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "disputePriceFor",
                                    "nameLocation": "8958:15:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6564,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6552,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "8991:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6568,
                                                "src": "8983:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6551,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "8983:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6554,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "9018:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6568,
                                                "src": "9011:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6553,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9011:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6556,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "9050:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6568,
                                                "src": "9037:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6555,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9037:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6559,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "9088:7:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6568,
                                                "src": "9073:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 6558,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6557,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6460,
                                                        "src": "9073:7:20"
                                                    },
                                                    "referencedDeclaration": 6460,
                                                    "src": "9073:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6460_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6561,
                                                "mutability": "mutable",
                                                "name": "disputer",
                                                "nameLocation": "9113:8:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6568,
                                                "src": "9105:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6560,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9105:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6563,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "9139:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6568,
                                                "src": "9131:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6562,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9131:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "8973:181:20"
                                    },
                                    "returnParameters": {
                                        "id": 6567,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6566,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "9187:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6568,
                                                "src": "9179:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6565,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9179:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9178:19:20"
                                    },
                                    "scope": 6650,
                                    "src": "8949:249:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6569,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "9204:708:20",
                                        "text": " @notice Disputes a price request with an active proposal where caller is the disputer.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n dispute.\n @return totalBond the amount that's pulled from the caller's wallet as a bond. The bond will be returned to\n the disputer once settled if the dispute was valid (the proposal was incorrect)."
                                    },
                                    "functionSelector": "3a31577e",
                                    "id": 6585,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "disputePrice",
                                    "nameLocation": "9926:12:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6581,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6571,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "9956:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6585,
                                                "src": "9948:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6570,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9948:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6573,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "9983:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6585,
                                                "src": "9975:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6572,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "9975:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6575,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "10010:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6585,
                                                "src": "10003:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6574,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10003:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6577,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "10042:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6585,
                                                "src": "10029:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6576,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10029:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6580,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "10080:7:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6585,
                                                "src": "10065:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 6579,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6578,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6460,
                                                        "src": "10065:7:20"
                                                    },
                                                    "referencedDeclaration": 6460,
                                                    "src": "10065:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6460_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "9938:155:20"
                                    },
                                    "returnParameters": {
                                        "id": 6584,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6583,
                                                "mutability": "mutable",
                                                "name": "totalBond",
                                                "nameLocation": "10128:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6585,
                                                "src": "10120:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6582,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10120:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10119:19:20"
                                    },
                                    "scope": 6650,
                                    "src": "9917:222:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6586,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "10145:754:20",
                                        "text": " @notice Attempts to settle an outstanding price request. Will revert if it isn't settleable.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters whose hash must match the request that the caller wants to\n settle.\n @return payout the amount that the \"winner\" (proposer or disputer) receives on settlement. This amount includes\n the returned bonds as well as additional rewards.\n @return resolvedPrice the price that the request settled to."
                                    },
                                    "functionSelector": "b730539f",
                                    "id": 6604,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "settle",
                                    "nameLocation": "10913:6:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6598,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6588,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "10937:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6604,
                                                "src": "10929:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6587,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10929:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6590,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "10964:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6604,
                                                "src": "10956:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6589,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10956:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6592,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "10991:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6604,
                                                "src": "10984:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6591,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "10984:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6594,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "11023:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6604,
                                                "src": "11010:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6593,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11010:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6597,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "11061:7:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6604,
                                                "src": "11046:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 6596,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6595,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6460,
                                                        "src": "11046:7:20"
                                                    },
                                                    "referencedDeclaration": 6460,
                                                    "src": "11046:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6460_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "10919:155:20"
                                    },
                                    "returnParameters": {
                                        "id": 6603,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6600,
                                                "mutability": "mutable",
                                                "name": "payout",
                                                "nameLocation": "11109:6:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6604,
                                                "src": "11101:14:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6599,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11101:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6602,
                                                "mutability": "mutable",
                                                "name": "resolvedPrice",
                                                "nameLocation": "11124:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6604,
                                                "src": "11117:20:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                },
                                                "typeName": {
                                                    "id": 6601,
                                                    "name": "int256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11117:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_int256",
                                                        "typeString": "int256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11100:38:20"
                                    },
                                    "scope": 6650,
                                    "src": "10904:235:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6605,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11145:462:20",
                                        "text": " @notice Computes the current state of a price request. See the State enum for more details.\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters.\n @return the State."
                                    },
                                    "functionSelector": "51205554",
                                    "id": 6622,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "getState",
                                    "nameLocation": "11621:8:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6617,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6607,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "11647:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6622,
                                                "src": "11639:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6606,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11639:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6609,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "11674:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6622,
                                                "src": "11666:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6608,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11666:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6611,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "11701:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6622,
                                                "src": "11694:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6610,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11694:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6613,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "11733:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6622,
                                                "src": "11720:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6612,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "11720:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6616,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "11771:7:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6622,
                                                "src": "11756:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 6615,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6614,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6460,
                                                        "src": "11756:7:20"
                                                    },
                                                    "referencedDeclaration": 6460,
                                                    "src": "11756:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6460_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11629:155:20"
                                    },
                                    "returnParameters": {
                                        "id": 6621,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6620,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6622,
                                                "src": "11811:31:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_enum$_State_$6205",
                                                    "typeString": "enum OptimisticOracleInterface.State"
                                                },
                                                "typeName": {
                                                    "id": 6619,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6618,
                                                        "name": "OptimisticOracleInterface.State",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6205,
                                                        "src": "11811:31:20"
                                                    },
                                                    "referencedDeclaration": 6205,
                                                    "src": "11811:31:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_enum$_State_$6205",
                                                        "typeString": "enum OptimisticOracleInterface.State"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "11810:33:20"
                                    },
                                    "scope": 6650,
                                    "src": "11612:232:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6623,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "11850:737:20",
                                        "text": " @notice Checks if a given request has resolved, expired or been settled (i.e the optimistic oracle has a price).\n @param requester sender of the initial price request.\n @param identifier price identifier to identify the existing request.\n @param timestamp timestamp to identify the existing request.\n @param ancillaryData ancillary data of the price being requested.\n @param request price request parameters. The hash of these parameters must match with the request hash that is\n associated with the price request unique ID {requester, identifier, timestamp, ancillaryData}, or this method\n will revert.\n @return boolean indicating true if price exists and false if not."
                                    },
                                    "functionSelector": "a337e1ad",
                                    "id": 6639,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "hasPrice",
                                    "nameLocation": "12601:8:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6635,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6625,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "12627:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6639,
                                                "src": "12619:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6624,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12619:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6627,
                                                "mutability": "mutable",
                                                "name": "identifier",
                                                "nameLocation": "12654:10:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6639,
                                                "src": "12646:18:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                },
                                                "typeName": {
                                                    "id": 6626,
                                                    "name": "bytes32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12646:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes32",
                                                        "typeString": "bytes32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6629,
                                                "mutability": "mutable",
                                                "name": "timestamp",
                                                "nameLocation": "12681:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6639,
                                                "src": "12674:16:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint32",
                                                    "typeString": "uint32"
                                                },
                                                "typeName": {
                                                    "id": 6628,
                                                    "name": "uint32",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12674:6:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint32",
                                                        "typeString": "uint32"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6631,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "12713:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6639,
                                                "src": "12700:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6630,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12700:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6634,
                                                "mutability": "mutable",
                                                "name": "request",
                                                "nameLocation": "12751:7:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6639,
                                                "src": "12736:22:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Request_$6460_memory_ptr",
                                                    "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                },
                                                "typeName": {
                                                    "id": 6633,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6632,
                                                        "name": "Request",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 6460,
                                                        "src": "12736:7:20"
                                                    },
                                                    "referencedDeclaration": 6460,
                                                    "src": "12736:7:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Request_$6460_storage_ptr",
                                                        "typeString": "struct SkinnyOptimisticOracleInterface.Request"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12609:155:20"
                                    },
                                    "returnParameters": {
                                        "id": 6638,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6637,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6639,
                                                "src": "12789:4:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                "typeName": {
                                                    "id": 6636,
                                                    "name": "bool",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12789:4:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "12788:6:20"
                                    },
                                    "scope": 6650,
                                    "src": "12592:203:20",
                                    "stateMutability": "nonpayable",
                                    "virtual": true,
                                    "visibility": "public"
                                },
                                {
                                    "documentation": {
                                        "id": 6640,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "12801:305:20",
                                        "text": " @notice Generates stamped ancillary data in the format that it would be used in the case of a price dispute.\n @param ancillaryData ancillary data of the price being requested.\n @param requester sender of the initial price request.\n @return the stamped ancillary bytes."
                                    },
                                    "functionSelector": "af5d2f39",
                                    "id": 6649,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "stampAncillaryData",
                                    "nameLocation": "13120:18:20",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6645,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6642,
                                                "mutability": "mutable",
                                                "name": "ancillaryData",
                                                "nameLocation": "13152:13:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6649,
                                                "src": "13139:26:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6641,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13139:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6644,
                                                "mutability": "mutable",
                                                "name": "requester",
                                                "nameLocation": "13175:9:20",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6649,
                                                "src": "13167:17:20",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6643,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13167:7:20",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13138:47:20"
                                    },
                                    "returnParameters": {
                                        "id": 6648,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6647,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6649,
                                                "src": "13247:12:20",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes"
                                                },
                                                "typeName": {
                                                    "id": 6646,
                                                    "name": "bytes",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "13247:5:20",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes_storage_ptr",
                                                        "typeString": "bytes"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "13246:14:20"
                                    },
                                    "scope": 6650,
                                    "src": "13111:150:20",
                                    "stateMutability": "pure",
                                    "virtual": true,
                                    "visibility": "public"
                                }
                            ],
                            "scope": 6651,
                            "src": "1388:11875:20",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:13222:20"
                },
                "id": 20
            },
            "contracts/oracle/interfaces/StoreInterface.sol": {
                "ast": {
                    "absolutePath": "contracts/oracle/interfaces/StoreInterface.sol",
                    "exportedSymbols": {
                        "FixedPoint": [
                            3569
                        ],
                        "IERC20": [
                            584
                        ],
                        "SafeMath": [
                            1464
                        ],
                        "SignedSafeMath": [
                            1528
                        ],
                        "StoreInterface": [
                            6695
                        ]
                    },
                    "id": 6696,
                    "license": "AGPL-3.0-only",
                    "nodeType": "SourceUnit",
                    "nodes": [
                        {
                            "id": 6652,
                            "literals": [
                                "solidity",
                                "^",
                                "0.8",
                                ".0"
                            ],
                            "nodeType": "PragmaDirective",
                            "src": "42:23:21"
                        },
                        {
                            "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
                            "id": 6653,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6696,
                            "sourceUnit": 585,
                            "src": "67:56:21",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "absolutePath": "contracts/common/implementation/FixedPoint.sol",
                            "file": "../../common/implementation/FixedPoint.sol",
                            "id": 6654,
                            "nameLocation": "-1:-1:-1",
                            "nodeType": "ImportDirective",
                            "scope": 6696,
                            "sourceUnit": 3570,
                            "src": "124:52:21",
                            "symbolAliases": [],
                            "unitAlias": ""
                        },
                        {
                            "abstract": false,
                            "baseContracts": [],
                            "canonicalName": "StoreInterface",
                            "contractDependencies": [],
                            "contractKind": "interface",
                            "documentation": {
                                "id": 6655,
                                "nodeType": "StructuredDocumentation",
                                "src": "178:107:21",
                                "text": " @title Interface that allows financial contracts to pay oracle fees for their use of the system."
                            },
                            "fullyImplemented": false,
                            "id": 6695,
                            "linearizedBaseContracts": [
                                6695
                            ],
                            "name": "StoreInterface",
                            "nameLocation": "296:14:21",
                            "nodeType": "ContractDefinition",
                            "nodes": [
                                {
                                    "documentation": {
                                        "id": 6656,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "317:130:21",
                                        "text": " @notice Pays Oracle fees in ETH to the store.\n @dev To be used by contracts whose margin currency is ETH."
                                    },
                                    "functionSelector": "cd3a9b24",
                                    "id": 6659,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "payOracleFees",
                                    "nameLocation": "461:13:21",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6657,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "474:2:21"
                                    },
                                    "returnParameters": {
                                        "id": 6658,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "493:0:21"
                                    },
                                    "scope": 6695,
                                    "src": "452:42:21",
                                    "stateMutability": "payable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6660,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "500:351:21",
                                        "text": " @notice Pays oracle fees in the margin currency, erc20Address, to the store.\n @dev To be used if the margin currency is an ERC20 token rather than ETH.\n @param erc20Address address of the ERC20 token used to pay the fee.\n @param amount number of tokens to transfer. An approval for at least this amount must exist."
                                    },
                                    "functionSelector": "8659d232",
                                    "id": 6668,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "payOracleFeesErc20",
                                    "nameLocation": "865:18:21",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6666,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6662,
                                                "mutability": "mutable",
                                                "name": "erc20Address",
                                                "nameLocation": "892:12:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6668,
                                                "src": "884:20:21",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6661,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "884:7:21",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6665,
                                                "mutability": "mutable",
                                                "name": "amount",
                                                "nameLocation": "935:6:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6668,
                                                "src": "906:35:21",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_calldata_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 6664,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6663,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "906:19:21"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "906:19:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "883:59:21"
                                    },
                                    "returnParameters": {
                                        "id": 6667,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "951:0:21"
                                    },
                                    "scope": 6695,
                                    "src": "856:96:21",
                                    "stateMutability": "nonpayable",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6669,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "958:597:21",
                                        "text": " @notice Computes the regular oracle fees that a contract should pay for a period.\n @param startTime defines the beginning time from which the fee is paid.\n @param endTime end time until which the fee is paid.\n @param pfc \"profit from corruption\", or the maximum amount of margin currency that a\n token sponsor could extract from the contract through corrupting the price feed in their favor.\n @return regularFee amount owed for the duration from start to end time for the given pfc.\n @return latePenalty for paying the fee after the deadline."
                                    },
                                    "functionSelector": "74201feb",
                                    "id": 6685,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "computeRegularFee",
                                    "nameLocation": "1569:17:21",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6677,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6671,
                                                "mutability": "mutable",
                                                "name": "startTime",
                                                "nameLocation": "1604:9:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6685,
                                                "src": "1596:17:21",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6670,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1596:7:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6673,
                                                "mutability": "mutable",
                                                "name": "endTime",
                                                "nameLocation": "1631:7:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6685,
                                                "src": "1623:15:21",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                },
                                                "typeName": {
                                                    "id": 6672,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1623:7:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6676,
                                                "mutability": "mutable",
                                                "name": "pfc",
                                                "nameLocation": "1677:3:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6685,
                                                "src": "1648:32:21",
                                                "stateVariable": false,
                                                "storageLocation": "calldata",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_calldata_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 6675,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6674,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1648:19:21"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1648:19:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1586:100:21"
                                    },
                                    "returnParameters": {
                                        "id": 6684,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6680,
                                                "mutability": "mutable",
                                                "name": "regularFee",
                                                "nameLocation": "1737:10:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6685,
                                                "src": "1710:37:21",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 6679,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6678,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1710:19:21"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1710:19:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            },
                                            {
                                                "constant": false,
                                                "id": 6683,
                                                "mutability": "mutable",
                                                "name": "latePenalty",
                                                "nameLocation": "1776:11:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6685,
                                                "src": "1749:38:21",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 6682,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6681,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "1749:19:21"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "1749:19:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "1709:79:21"
                                    },
                                    "scope": 6695,
                                    "src": "1560:229:21",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                },
                                {
                                    "documentation": {
                                        "id": 6686,
                                        "nodeType": "StructuredDocumentation",
                                        "src": "1795:191:21",
                                        "text": " @notice Computes the final oracle fees that a contract should pay at settlement.\n @param currency token used to pay the final fee.\n @return finalFee amount due."
                                    },
                                    "functionSelector": "5b97aadd",
                                    "id": 6694,
                                    "implemented": false,
                                    "kind": "function",
                                    "modifiers": [],
                                    "name": "computeFinalFee",
                                    "nameLocation": "2000:15:21",
                                    "nodeType": "FunctionDefinition",
                                    "parameters": {
                                        "id": 6689,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6688,
                                                "mutability": "mutable",
                                                "name": "currency",
                                                "nameLocation": "2024:8:21",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6694,
                                                "src": "2016:16:21",
                                                "stateVariable": false,
                                                "storageLocation": "default",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                },
                                                "typeName": {
                                                    "id": 6687,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2016:7:21",
                                                    "stateMutability": "nonpayable",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2015:18:21"
                                    },
                                    "returnParameters": {
                                        "id": 6693,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                            {
                                                "constant": false,
                                                "id": 6692,
                                                "mutability": "mutable",
                                                "name": "",
                                                "nameLocation": "-1:-1:-1",
                                                "nodeType": "VariableDeclaration",
                                                "scope": 6694,
                                                "src": "2057:26:21",
                                                "stateVariable": false,
                                                "storageLocation": "memory",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_Unsigned_$1955_memory_ptr",
                                                    "typeString": "struct FixedPoint.Unsigned"
                                                },
                                                "typeName": {
                                                    "id": 6691,
                                                    "nodeType": "UserDefinedTypeName",
                                                    "pathNode": {
                                                        "id": 6690,
                                                        "name": "FixedPoint.Unsigned",
                                                        "nodeType": "IdentifierPath",
                                                        "referencedDeclaration": 1955,
                                                        "src": "2057:19:21"
                                                    },
                                                    "referencedDeclaration": 1955,
                                                    "src": "2057:19:21",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_Unsigned_$1955_storage_ptr",
                                                        "typeString": "struct FixedPoint.Unsigned"
                                                    }
                                                },
                                                "visibility": "internal"
                                            }
                                        ],
                                        "src": "2056:28:21"
                                    },
                                    "scope": 6695,
                                    "src": "1991:94:21",
                                    "stateMutability": "view",
                                    "virtual": false,
                                    "visibility": "external"
                                }
                            ],
                            "scope": 6696,
                            "src": "286:1801:21",
                            "usedErrors": []
                        }
                    ],
                    "src": "42:2046:21"
                },
                "id": 21
            }
        }
    }
}
